每次随机杀掉一个奇数位的人后的存活概率问题

语言: CN / TW / HK

600 个人站一排,每次随机杀掉一个奇数位的人,几号最安全?

在最前面,为了简单,我们用一个简记符号,其中 $ \lceil x\rceil $ 表示上取整:

$$ \tau_{x} = \lceil \frac{x}{2} \rceil $$

现在我们假设有 $n$ 个人,第 $k$ 个人存活到最后的概率为 $p(n,k)$ 。考虑第一个杀死的人的位置,很容易我们就能得到递推式子:

$$ p(n, k) = \frac{\tau_{k-1}}{\tau_n} \times p(n-1,k-1) + \frac{\tau_n-\tau_k}{\tau_n} \times p(n-1, k)$$

到这里之后可以用计算机程序快速算出数值结果。但这里有个奇妙的地方在于,它的符号解也特别简单:

$$ p(n, k) = \frac{\tau_{k-1}}{\tau_{n-1}\tau_n} $$

更直观的看,每个人存活的概率为 0, 1, 1, 2, 2, 3, 3, 这样一直下去,最后再标准化(使得概率总和为 1 )。结果非常优美。

很容易验证上面的结果和递推式。但如果不是提前知道答案,直接从上面的递推式子很难猜到。我们可以换一种方法,注意到下面这个事实:前面的 $m$ 个人的存活(相对)概率分布和后面有多少人没有关系,这样我们只用把最后一个人的存活概率算出来,然后再往前推,就可以获得所有的存活概率。

最后一个人存活概率 $p(n) = p(n, n)$ 有一个简单递推式:

$$ p(2n) = p(2n-1)$$
$$p(2n+1) = \frac{n}{n+1} p(2n)$$

结合 $p(1) = p(2) = 1 $ ,很简单就可以得出:

$$ p(n) = \frac{1}{\tau_n}$$

然后我们算倒数第二个人:

$$ p(n,n-1)=(1-p(n))\times p(n-1) = \frac{\tau_{n-2}}{\tau_{n-1}\tau_n}$$

然后有一个特别好的递归式:

$$ \tau_0 + \tau_2 + \cdots + \tau_{n-1} = \tau_{n-1} \tau_n$$
$$ \tau_{k-1}\tau_k + \tau_k + \tau_{k+1} + \cdots + \tau_{n-1} = \tau_{n-1} \tau_n$$

用上面式子类似地往前推,可以得出:

$$\begin{equation}\begin{split} p(n,k)&=(1-p(n,k+1)-p(n,k+2)-\cdots-p(n,n))\times p(k,k) \\ &= \frac{\tau_{n-1} \tau_n-\tau_k-\tau_{k+1}-\cdots-\tau_{n-1}}{\tau_{n-1} \tau_n} \times\frac{1}{\tau_k} \\ &= \frac{\tau_{k-1}\tau_k}{\tau_{n-1} \tau_n}\times\frac{1}{\tau_k } \\ &= \frac{\tau_{k-1}}{\tau_{n-1}\tau_n} \end{split} \end{equation}$$

Q. E. D.