1.简单题
投一个骰子,各个数字的概率都是1/6。 问投的数字6的期望次数。
很显然,这个题的答案是E=1/(1/6)=6;
具体计算如下:
分成两部分(1)当前状态下有1/6的概率投出数字6,投掷次数就是1/61;(2)5/6的概率投掷出其他数字,那么需要重现再投E次,才能得到数字6,投掷次数是5/6(1+E).
因此,总的式子就是 E= 1/61+5/6*(1+E) , 解得:E=6。
2.进阶题
抽到R的概率2/3,抽到S的概率是1/3,那么连抽RRR后必抽到S的期望次数,即问抽n次后,E(S).
稍微复杂,但是可以拆解成四部分:
- 出现R的期望次数
E1=2/31+1/3(1+E1);- 出现RR的期望次数是(在E1的基础上才可能出现RR,一旦出现S,从头来过)
E2= 2/3(E1+1)+1/3*(E1+E2+1)- 出现RRR的期望次数是(在E2的基础上)
E3=2/3(E2+1)+1/3*(E2+1+E3);- 这里需要注意,出现S后结束;但是出现R的时候,我们不需要从头来过,他得到是RRRR,是可以在E3的基础上继续投的,因此我们只需要继续投E4-E3次:
E4=1/3(E3+1)+2/3*(1+E3+E4-E3);
可以得到:
E1=3/2.
E2=15/4
E3=57/8
E4=81/8
代码验证:
import random
n=10000000
coin=[0,1,2]
times=[]
for i in range(n):
count=0;
R=0
S=0
while R<3 or S<1:
result=random.choice(coin)
if result<2:#R
R=R+1;
else:#S
if R>=3 and S==0:
S=S+1
else:
S=0
R=0
count=count+1
times.append(count)
aa=sum(times)*1.0/n
print(aa)
>>10.1248318