你开始有一块钱,你每轮把 $f$ 倍率的钱拿去下注,每次翻硬币正面朝上可以获得这么多钱,反面朝上就失去这么多钱.1e3轮之后你的钱有概率突破1e9,问选取最合适的 $f$ 使概率最大,你有多大概率超过1e9.

首先把加法化成乘法:正反面朝上分别会获得 $(1+2f),(1-f)$ .所以丢N次硬币假设正面次数为n,有

显然这个函数是单调的,直观理解为赢的次数越多钱越多.那么必定存在一个最小的 $n$ 值 $n_0$ 满足 $W(n)\ge M$ ,列式子如下:

我们要求右边函数的最小值,使用 scipy.optimizefminbound 解决,得到 $n_0=\lceil h(x_0)\rceil$ .

剩下的就简单了,答案是 $\frac{\sum_{i=n_0}^N\binom{N}{i}}{2^N}$