问题提出:
有这样一种试验,一个袋子里有m个球,每次从袋子里抽出a个球,每抽n 次后再把抽出的球放回,然后又继续抽,直到抽到指定的那个球, 求抽的次数的数学期望。
例如:有1个大袋子,里面有99个白球1个红球,另外有一个空的小篮子一次只能装10个球,我每次从大袋子中随机抽出1个球放到小篮子中,如果小篮子装满了我就全部倒回大袋子里去,重新再抽,直到抽到红球为止。试问我抽到红球所需抽的次数的数学期望是多少?
问题分析:
在问题例子中,相当于一直重复进行概率为
1/100,1/99,1/98,1/97,1/96,1/95,1/94,1/93,1/92,1/91,
1/100,1/99,1/98,1/97,1/96,1/95,1/94,1/93,1/92,1/91,
1/100,1/99,1/98,1/97,1/96,1/95,1/94,1/93,1/92,1/91,
...
的试验。
更一般的,其一直在重复进行着概率为
...
的试验。
而目标是求第一次成功所需试验次数的数学期望,类似于几何分布。
期望公式推导
设,则所需试验次数期望公式推导过程如下(由于页面编辑公式十分困难,这里只能贴图片了):
最终期望公式为:
计算问题答案:
这里根据推导的期望公式编写一小段python代码计算抽到红球所需次数的数学期望。(注意针对较小的数据运算建议用decimal,不要用float,减少小数舍弃带来的误差)。
sample_p=[1/100,1/99,1/98,1/97,1/96,1/95,1/94,1/93,1/92,1/91]
n=len(sample_p)
E=decimal.Decimal(0)
q_pre=decimal.Decimal(1)
for i in range(1, n+1):
p=sample_p[i-1]
p=decimal.Decimal(p)
q=decimal.Decimal(1)-p
if i<n:
E= E + i*q_pre*p
else:
E = E + n * q_pre
q_pre=q_pre*q
E = E/(1-q_pre)
print(E)
结果期望是95.5次。