以下问题引用Project Euler Problem 499,可在此处找到。简而言之,这就是问题所在:一个赌徒以美元开头,他可以用一美元来赌博。一旦他开始玩,他就向经销商支付m美元,他获得1美元的底池。然后他翻了一个公平的硬币。如果硬币落在头上,他的底池加倍,他又玩了。如果硬币落在尾巴上,赌徒将占据整个底池,并且他必须再次向经销商支付m美元的起始费用以获得他的底池。对于m = 2 $和s = 2 $,他从未用完钱的概率是多少?
我的策略是创建一个带有分支概率树的python脚本,该树将告诉我某个分支上的所有可能结果(例如,25次掷币后的所有可能性)。这是脚本:
!
我认为随着树上层数的增加,答案会越来越准确。在测试这个理论时,我惊讶地发现2磅成本和2磅初始量的失败率稳定在35.4%左右,而不是问题给我的预期的25.2%。
一些可能的原因可能是我假设给定线路上的所有非故障将永远继续,但我不知道如何解释这一点而不添加另一个分支,从而重复问题。任何见解将不胜感激。
答案 0 :(得分:0)
对于P2(2),对于起始财富为2的游戏,付费2,我使用一种梯度下降方法来达到示例给出的答案。
l={x:1.0/2**27 for x in range(1,31)}
l[1]=1
l[28]=(2.0/3)**27
l[29]=(2.0/3)**28
l[30]=(2.0/3)**29
count = 1
while count <1000:
for i in range(2,28):
a = 4
l[i] =2.0/3*l[i-1]
index = 1
while i-2+a <= 30:
l[i] += 1.0/(2**index * 3)*l[i-2+a]
index += 1
a = 2**(index+1)
count +=1
if count % 10 == 0: print 1-l[2]
可以看出,答案很快收敛。这也给出了P2(5)的答案。然而,对于一个大的起始财富,这种方法不太可能