如果一个人扔个6面骰子, 如果扔到了任一不是bad number的数,都可以得到对应数的奖金, 并且可以选择是否选择继续参加游戏, 如果不继续就可以带走手上所有的钱. 如果扔到了bad number (假设是1), 就必须交付手上现有的所有的钱并且中止游戏. 请问这个游戏的期望是多少?
2个回答
假设扔完$k$次之后,手上钱的期望为$E_k$。
显然
$$E_1=\frac{0+2+3+4+5+6}{6}=\frac{10}{3}$$
并且
$$E_{k+1}=\frac{1}{6}0+\frac{5}{6}(E_k+4)=\frac{5}{6}E_k+\frac{10}{3}$$
当$E_{k+1}=E_k$的时候,停止扔骰子,此时$E_k=20$。
SofaSofa数据科学社区DS面试题库 DS面经
				非常感谢, 很intuitive.
				- 
             lethe63
           
				
          
          2019-02-12 03:24
			
				Ek+4怎么来的?
				- 
             fishinsnow
           
				
          
          2020-07-28 13:15
			
				4=(2+3+4+5+6)/5,也就是每步不扔1时得到奖金的期望。
				- 
             Zealing
           
				
          
          2020-07-29 02:44
			
有个Hold at 20 turn的策略,每一步期望的最大值是20,如果当前得分达到20,就要见好而收。
假设策略是一直扔骰子,求扔到1前得分的均值。
第$k$步的概率$p_k=\frac{(5/6)^{k-1}}{\sum_{k=1}^{\infty}(5/6)^{k-1}}$,分子为归一化因子。
第$k$步得分的均值是$E_{k}(score)=4k*(5/6)+0*1/6$
得分的均值
$$E(score)=\sum_{k=1}^{\infty}p_kE_k(score)$$
$$=\frac{\sum_{k=1}^{\infty}4k(5/6)^k}{\sum_{k=1}^{\infty}(5/6)^{k-1}}$$
$$=120/6$$
$$=20$$
用MC验证:
import numpy as np
n=10000
score=np.zeros(n)
step=np.zeros(n)
for i in range(n):
  x=np.random.randint(low=1,high=7)
  while x>1:
    score[i]+=x
    step[i]+=1
    x=np.random.randint(low=1,high=7)
    
print("E(score)=%f"%score.mean())
print("E(step)=%f"%step.mean())结果是
E(score)=19.878700
E(step)=4.978100SofaSofa数据科学社区DS面试题库 DS面经
				谢谢, 非常清楚. 所以hold at 20 turn这个策略就是根据期望值是20这个结果的得出的结论是吗?
				- 
             lethe63
           
				
          
          2019-02-12 03:24
			
    
  相关讨论
  随便看看