問題提出:
有這樣一種試驗,一個袋子裏有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次。