知乎热榜 ( ) • 2024-04-01 08:58
Yves S的回答

现有的几个回答用的都是数值模拟,我们来看看怎么从理论的角度解决问题。当然,精确求解确实是很难的--方法上并没有什么难度,用马氏链建个模,把连续若干次正面的情况设成吸收态,然后算这个马氏链在一定时间内被吸收的概率就行了;难的是这样做就需要算一个很大的矩阵的九千多次方,计算量非常大。但是我们可以考虑使用一些近似来简化问题。

我们先想一想,在这一万次掷硬币的结果里面,连续(至少)n个正面的段落的分布有什么规律。首先它明显具有一定的齐次性,也就是说这样的事件发生的概率和时间点没什么关系,从第一次开始连续n个正面和从第九千次开始连续n个正面的概率没什么区别。其次,这样的事件在稍微大一些的尺度上是独立的。离得很近当然不独立,因为这样的段落彼此是不能重叠的;但是只要离远一些,中间有反面分割,彼此之间就独立了。所以尽管不是完全独立,却也是相当接近独立的。最后,既然我们关心的是很多次投掷之后的最大值,那么在每个局部看,出现这么一长串正面就都会是一个小概率事件。

好,总结一下:大量的(近似)独立、齐次(即同概率)的小概率事件。有没有想到什么?

对,是泊松分布!这样的事件发生的次数近似服从泊松分布。学过随机过程的朋友还可以看出来,这些片段的发生近似服从一个泊松点过程。这就为我们解决问题提供了简单易操作的数学工具。

下面都是常规操作了。首先,“最多n连正”的概率直接算起来不太方便,因为这意味着一方面要有n连正,另一方面它还要是最长的。所以更简单的方法是考虑“存在至少n连正”的概率,然后“最多n连正”就等价于“存在至少n连正但是不存在至少n+1连正”。写成数学语言,令M为最大连正的个数,则我们要求的

P(M=n)=P(M\geq n)-P(M\geq n+1).

而“存在至少n连正”又可以写成“至少n连正的事件发生数大于等于1”,也就是“至少n连正的事件发生数为0”的补集。前面已经说了,10000次抛掷里至少n连正的发生次数近似服从泊松分布,那么现在唯一还不知道的就是这个分布的参数,记为 \lambda_n 。注意到这也是泊松分布的期望值,所以想要知道 \lambda_n 只需要计算至少n连正的片段的个数的期望即可。

我们用每个片段开始的第一个正面来标记这个片段。对任意一次抛掷,如果它的结果是这样一个片段的开始,那么从它开始的n次抛掷的结果都要是正面,并且前一次的结果是反面。这个组合出现的概率是 2^{-(n+1)} 。所以10000次抛掷得到的这样的点的数量的期望,也就是至少n连正的片段的个数的期望,约为 10000\cdot2^{-(n+1)} 。这就是 \lambda_n 的近似值。

由泊松分布的概率函数,一个参数为 \lambda_n 的泊松分布取0的概率为 e^{-\lambda_n} 。因此我们有

P(M\geq n)=1-e^{-\lambda_n}\approx 1-e^{-10000\cdot 2^{-(n+1)}}.

于是有

P(M=n)=P(M\geq n)-P(M\geq n+1)\approx e^{-10000\cdot 2^{-(n+2)}}-e^{-10000\cdot 2^{-(n+1)}}.

n是离散的,但是我们还是可以把它当成连续的来处理,通过求导看一下增减性。其导数经整理为

c[e^{-10000\cdot 2^{-(n+2)}}2^{-(n+2)}-e^{-10000\cdot 2^{-(n+1)}}2^{-(n+1)}],

其中c是正常数。令此式得0,解 n_0 满足

e^{-10000\cdot 2^{-(n_0+2)}}=2e^{-10000\cdot 2^{-(n_0+1)}},

因此

n_0=-\log_2(\ln(2)/10000)-2\approx 11.82\approx 12.

所以12连正的概率是最大的。当然,为了严格一些,我们应该检查令导数为0得到的 n_0 确实对应极大值而不是极小值或者其他驻点,以及11连正确实比12连正的(近似)概率小,此处略过。

最后,我们可以把n取12附近的时候算出来的近似概率和其他回答用数值模拟得到的概率估计,比如 @张宏亮 的结果,做一个比较,看看我们采用的这些近似效果如何:

n近似概率数值模拟90.00750.009100.07950.079110.20800.203120.24810.252130.19380.189140.12150.123150.06810.070

可以看到,用近似方法得到的概率值和数值模拟结果符合得很好。这说明我们采用的近似方法有令人满意的精度。