硬币投掷/谁想成为亿万富翁

时间:2015-11-16 20:16:04

标签: python

问题: 您将获得独特的投资机会。 从1欧元的资本开始,您可以选择固定比例f来投注a 公平的硬币反复抛出1000次投掷。 你的回报是你的赌注的两倍,你失去了对尾巴的赌注。 例如,如果f = 1/4,对于第一次投掷,你下注0.25欧元,如果头上升你赢得0.5欧元 然后有1.5欧元。然后你下注0.375欧元,如果第二次抛出尾巴,你有1.125。 选择f可以最大限度地提高在1,000次翻转后获得至少1,000,000,000欧元的机会 你成为亿万富翁的机会是什么? 假设所有计算都是精确的(没有舍入),但将答案舍入为12 小数点后面的数字。

我已经研究过在python中实现这个的已发表/学者资料,无法到达任何地方。有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

编写模拟很容易 - 我很难搞清楚优化,我尝试.4到.1用于pct乘数,并且总是在不到1000次尝试中超过10亿:

from random import randint

x = 1.0   # 1 euro
pct = .25 # 1/4

for i in range(1000): # 0-999 = 1000
    bet = x * pct
    if randint(0,1) == 1: # assume 0 = tails 1 = heads
        x += bet*2
    else:
        x -= bet

    if x > 1000000000.0:
        break

print i,x

请注意,一旦达到十亿,我就会停止 - 如果你进行1000次迭代,这些数字会变得很疯狂