码迷,mamicode.com
首页 > 其他好文 > 详细

nowcoder 202H-卡牌游戏

时间:2018-10-02 20:39:59      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:需要   目标   inf   分析   www.   一点   test   数学   游戏   

题目链接

题目描述
小贝喜欢玩卡牌游戏。某个游戏体系中共有N种卡牌,其中M种是稀有的。小贝每次和电脑对决获胜之后都会有一个抽卡机会,这时系统会随机从N种卡中选择一张给小贝。普通卡可能多次出现,而稀有卡牌不会被重复抽到。小贝希望收集到K种稀有卡牌,她想知道期望需要多少次获胜才能实现这个目标。
输入描述:
数据有多组,第一行一个整数T表示数据组数。
每组数据一行,三个整数N,M,K.1 ≤ T ≤ 100, 1 ≤ N ≤ 10$$$^5$$$,1 ≤ M ≤ N,1 ≤ K ≤ M
输出描述:
对于每组数据,输出形如"Case #x: y",其中 x 为这组数据的编号(从1开始),y 为这组数据的答案。答案的绝对误差或相对误差在10$$$^{-6}$$$以内都认为是正确的。
输入
2
5 2 1
40 9 5
输出
Case #1: 2.5
Case #2: 28.1146825397
题意
一共n个物品,其中n-m个物品抽到放回,m个物品抽到不放回。抽到m个物品中的k个,求需要抽多少次的期望。
分析
如果对这个题目没有一点想法,那么先来看一下《线性代数与概率统计》里面经典的投篮数学期望问题吧。
篮球选手连续定点投篮,直到命中为止。假设他每次命中的概率为p,且各次投篮是相互独立的。用X表示首次命中所需投篮次数,求X的数学期望。 那么X服从下面的几何分布 $$$$$$ \begin{align} & P(X=k)=(1-p)^{k-1}p \& E(X)=\sum_{k=1}^{\infty}k(1-p)^kp=p\sum_{k=1}^{\infty}k(1-p)^k=p\frac{1}{p^2}=\frac{1}{p} \ \end{align} $$$$$$ 那么对于这道题而言,相当于总共要投中k个球。先求第一次抽到稀有卡的次数期望,和上面的过程是一样的,抽中稀有卡的概率是$$$p=\frac{m}{n}$$$,所以期望是$$$EX=\frac{n}{m}$$$;接下来再求第二次抽到稀有卡的次数期望,其实还是一次“投球实验”,只不过概率变为$$$p=\frac{m-1}{n-1}$$$,而期望也相应的变为$$$EX=\frac{n-1}{m-1}$$$。所以1~k次的次数期望,用同样的方法就可以求出来。
总结
对不起我的线性代数老师
代码
#include<stdio.h>
int main(){
    int T;
    int n,m,k;
    scanf("%d",&T);
    double ans=0;
    for(int kase=1;kase<=T;++kase){
        scanf("%d%d%d",&n,&m,&k);
        printf("Case #%d: ",kase);
        ans=0.0;
        for(int i=0;i<=k-1;i++)
            ans+=1.0*(n-i)/(m-i);
        printf("%.7f\n",ans);
    }
}

nowcoder 202H-卡牌游戏

标签:需要   目标   inf   分析   www.   一点   test   数学   游戏   

原文地址:https://www.cnblogs.com/tobyw/p/9737629.html

(1)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!