0499 圣彼得堡彩票
* * * *
拉格朗日计划
* * * *
圣彼得堡彩票

赌徒张三决定去买一种特殊的彩票,开始时奖池中有1元,每次购买花费m元,购买后掷出一枚硬币,正面朝上时奖池翻倍且继续,否则结束,张三可以带走当前奖池中所有的钱。

初始时张三有s元,他将不断重复上述过程,直到财产不足m元为止。记$p_m(s)$为张三的财产永远不会小于m的概率。

可以验证$p_2(2)=0.2522, p_2(5)=0.6873, p_6(10000)=0.9952$(注意若$m>s$, 则显然$p_m(s)=0$)。

求$p_{15}(10^9)$,结果保留七位小数。

本题难度:



解答

不难看出 $$p_m(n)=\frac{1}{2}p_m(n-m+1)+\frac{1}{4}p_m(n-m+2)+\frac{1}{8}p_m(n-m+3)+\ldots$$ 若令$q_m(n)=1-p_m(n)$,则也有 $$q_m(n)=\frac{1}{2}q_m(n-m+1)+\frac{1}{4}q_m(n-m+2)+\frac{1}{8}q_m(n-m+3)+\ldots$$ 考虑 $$z^m=\sum_{i=0}^{\infty}=\frac{z^{2^i}}{2^{i+1}}$$ 在单位区间内的解,游戏结束时张三有$n$元的情况用$z^n$表示,若游戏永远不会结束,则用$0$表示,则需要 $$(1-p_m(s))z^{m-1}\le z^s\le 1-p_m(s).$$ 二分求解即可得结果$0.8660312$。

注:为方便格式化输出,以下代码为Python 3。

n=15
s=10**9

a,b,d=0,1,0
while b-a!=d:
    d=b-a
    c=(a+b)/2
    m=-1
    x=1
    y=c**(x-n)/x/2
    while y:
        m+=y
        x*=2
        y=c**(x-n)/x/2
    if 0>m:
        b=c
    else:
        a=c

print(f"{1-a**(s-n+1):.7f}")