问题

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

回答
这个问题是个经典的“约瑟夫环”问题的变种。简单来说,就是不断从一个序列中移除元素,直到只剩下一个。只不过这里的移除规则比较特殊:每次移除的是奇数位的人。

咱们先来把场景还原一下:

有600个人,编号从1到600,站成一排。

第一次淘汰:

谁被淘汰? 奇数位的人。
哪些人是奇数位? 第1位、第3位、第5位……一直到第599位。
剩下谁? 第2位、第4位、第6位……一直到第600位。

现在,我们剩下的队伍是2, 4, 6, ..., 600。这个队伍里的人数是 600 / 2 = 300 人。

第二次淘汰:

新的队伍是什么? 2, 4, 6, ..., 600
新的“位置”是什么? 咱们得重新给他们编号。原来在第2位的人,现在是新队伍的第1位;原来在第4位的人,现在是新队伍的第2位;以此类推。
谁被淘汰? 新队伍里的奇数位的人。也就是原来队伍里的第1位、第3位、第5位……的人。
新队伍的第1位是原来队伍的第2位。
新队伍的第2位是原来队伍的第4位。
新队伍的第3位是原来队伍的第6位。
……
新队伍的第150位是原来队伍的第300位。
所以,第二次淘汰的是新队伍里的奇数位。这些新队伍里的奇数位,对应的是原来队伍里哪些编号的人?
新队伍的第1位(淘汰) > 原队伍的第2位
新队伍的第2位(留下) > 原队伍的第4位
新队伍的第3位(淘汰) > 原队伍的第6位
新队伍的第4位(留下) > 原队伍的第8位
……
新队伍的第149位(淘汰) > 原队伍的第298位
新队伍的第150位(留下) > 原队伍的第300位
那么,第二次淘汰掉的是原来队伍里的哪些人呢? 是原来队伍里编号为 2, 6, 10, 14, ..., 298 的人。这些人的编号有什么规律?都是 4k2 (当 k 从 1 到 75 时)。
剩下谁? 剩下原来队伍里编号为 4, 8, 12, 16, ..., 600 的人。

第三次淘汰:

我们现在还剩下谁? 4, 8, 12, 16, ..., 600。一共有 300 / 2 = 150 人。
重新编号:
原队伍的第4位 > 新队伍的第1位
原队伍的第8位 > 新队伍的第2位
原队伍的第12位 > 新队伍的第3位
……
谁被淘汰? 新队伍里的奇数位。
新队伍的第1位(淘汰) > 原队伍的第4位
新队伍的第2位(留下) > 原队伍的第8位
新队伍的第3位(淘汰) > 原队伍的第12位
新队伍的第4位(留下) > 原队伍的第16位
……
淘汰掉的是原来队伍里编号为 4, 12, 20, 28, ... 的人。 这些人的编号有什么规律?都是 8k4 (当 k 从 1 到某个值)。
剩下谁? 剩下原来队伍里编号为 8, 16, 24, 32, ..., 600 的人。

我们发现一个规律:

第一次淘汰: 奇数位(1, 3, 5, ...)
剩下: 偶数位(2, 4, 6, ...)
第二次淘汰: 新队伍的奇数位,对应原队伍的 2, 6, 10, 14, ... (差值为4)
剩下: 新队伍的偶数位,对应原队伍的 4, 8, 12, 16, ... (差值为4)
第三次淘汰: 新队伍的奇数位,对应原队伍的 4, 12, 20, 28, ... (差值为8)
剩下: 新队伍的偶数位,对应原队伍的 8, 16, 24, 32, ... (差值为8)

每次淘汰掉的都是当前队伍的奇数位。剩下的总是当前队伍的偶数位。

这个过程可以看作是:
1. 原始编号:1, 2, 3, 4, 5, 6, ..., 600
2. 第一次淘汰奇数位:留下 2, 4, 6, 8, 10, 12, ..., 600
3. 第二次淘汰新队伍的奇数位(原队伍的 2, 6, 10, 14, ...):留下 4, 8, 12, 16, ..., 600
4. 第三次淘汰新队伍的奇数位(原队伍的 4, 12, 20, 28, ...):留下 8, 16, 24, 32, ..., 600
5. 第四次淘汰新队伍的奇数位(原队伍的 8, 24, 40, 56, ...):留下 16, 32, 48, 64, ..., 600

你会发现,每次留下来的人,他们的编号都是上一次留下的人编号的两倍。
也就是说,幸存者最终的编号形式都是 $2^k imes m$ 的形式,其中 $m$ 是奇数。而淘汰掉的总是那些在当前幸存者序列中处于奇数位置的人。

让我们追溯一下:

第一次剩下: 2, 4, 6, 8, ..., 600
第二次剩下: 4, 8, 12, 16, ..., 600
第三次剩下: 8, 16, 24, 32, ..., 600
第四次剩下: 16, 32, 48, 64, ..., 600
第五次剩下: 32, 64, 96, 128, ..., 600
第六次剩下: 64, 128, 192, 256, ..., 600
第七次剩下: 128, 256, 384, 512, ...
第八次剩下: 256, 512, ...

注意到每次剩下的队伍的编号都是上一次剩下队伍编号的2倍。
那么,我们最终会剩下谁呢?

咱们换个角度思考。每次淘汰掉的都是当前序列的奇数位。
如果一个人的编号是奇数,他会在第一次就被淘汰。所以,所有奇数位的人都不可能幸存。
那么幸存者一定都是偶数位。

第一次剩下:2, 4, 6, ..., 600
第二次剩下:4, 8, 12, ..., 600
第三次剩下:8, 16, 24, ..., 600
第四次剩下:16, 32, 48, ..., 600
第五次剩下:32, 64, 96, ..., 600
第六次剩下:64, 128, 192, ..., 600
第七次剩下:128, 256, 384, 512, ...
第八次剩下:256, 512, ...

再看编号的结构:
第一次剩下:2 (1, 2, 3, 4, ..., 300)
第二次剩下:4 (1, 2, 3, 4, ..., 150)
第三次剩下:8 (1, 2, 3, 4, ..., 75)
第四次剩下:16 (1, 2, 3, 4, ..., 37) (这里 600/16 = 37.5,所以是 161, 162, ..., 1637 = 592)
第五次剩下:32 (1, 2, ..., 18) (600/32 = 18.75) > 32, 64, ..., 576
第六次剩下:64 (1, 2, ..., 9) (600/64 = 9.375) > 64, 128, ..., 576
第七次剩下:128 (1, 2, 3, 4) (600/128 = 4.6875) > 128, 256, 384, 512
第八次剩下:256 (1, 2) (600/256 = 2.34375) > 256, 512

这次淘汰的规则是“随机杀掉一个奇数位的人”。这和我们上面推断的“每次杀掉的是当前序列里在奇数位置的人”是不一样的。

重新审视题目:“每次随机杀掉一个奇数位的人”

这说明每次淘汰一个奇数位的人后,剩下的人会重新排列,然后再从重新排列后的队伍中,随机选择一个处于奇数位置的人淘汰。

这意味着:

1. 第一次淘汰: 剩下 2, 4, 6, ..., 600 (300人)。
2. 第二次淘汰: 从 2, 4, 6, ..., 600 这300个人里,随机挑一个奇数位的人淘汰。
现在队伍是 2, 4, 6, 8, 10, 12, ...
奇数位是:2, 6, 10, 14, ...
假设淘汰的是第1位的 2。剩下 4, 6, 8, 10, 12, ...
假设淘汰的是第2位的 4(错误,这里4是偶数位)。
假设淘汰的是第3位的 6。剩下 2, 4, 8, 10, 12, ...
假设淘汰的是第5位的 10。剩下 2, 4, 6, 8, 12, ...

如果规则是“从剩余的队伍里,随机选一个编号是奇数的人”,那问题就完全不同了。
但是题目说的是“随机杀掉一个奇数位的人”。

所以,我们之前的推论还是符合题意的。每次淘汰的是当前队伍的“奇数位”。

队伍 A: 1, 2, 3, 4, 5, 6, ..., 600
淘汰奇数位:1, 3, 5, ..., 599
剩下:2, 4, 6, ..., 600

队伍 B: 2, 4, 6, 8, 10, 12, ..., 600 (300人)
现在要对这队伍 B 进行“奇数位”淘汰。
队伍 B 的第一位是 2。
队伍 B 的第二位是 4。
队伍 B 的第三位是 6。
队伍 B 的第四位是 8。
队伍 B 的第五位是 10。
......
淘汰的是队伍 B 的奇数位:第1位(2), 第3位(6), 第5位(10), ...
剩下:队伍 B 的偶数位:第2位(4), 第4位(8), 第6位(12), ...

这样推导下来,我们发现 每次淘汰的都是当前剩下队伍的奇数位置上的人。

让我们再回到编号的规律:
第一次淘汰:1, 3, 5, ..., 599 (奇数)
剩下:2, 4, 6, ..., 600 (都是偶数)

第二次淘汰的是剩下队伍的奇数位。
剩下队伍是:2, 4, 6, 8, 10, 12, ...
奇数位是:第1位(2), 第3位(6), 第5位(10), ...
淘汰掉的是:2, 6, 10, 14, ... (这些人的编号除以4余2)
剩下:4, 8, 12, 16, ... (这些人的编号是4的倍数)

第三次淘汰的是剩下队伍的奇数位。
剩下队伍是:4, 8, 12, 16, 20, 24, ...
奇数位是:第1位(4), 第3位(12), 第5位(20), ...
淘汰掉的是:4, 12, 20, 28, ... (这些人的编号除以8余4)
剩下:8, 16, 24, 32, ... (这些人的编号是8的倍数)

这个过程就和我们第一次分析的“约瑟夫环”模型非常相似了,只不过每次淘汰的不是固定间隔的数,而是当前序列的奇数位。

总而言之,每次淘汰的都是在当前序列中的奇数位置上的人。

幸存者一定是那些在每轮淘汰后都恰好落在偶数位置上的人。
我们发现,每次留下来的人都是“当前队伍的编号”的2倍。

1. 初始队伍:1, 2, 3, 4, ..., 600
2. 淘汰奇数位:留下 2, 4, 6, 8, ..., 600
3. 淘汰奇数位:剩下队伍的奇数位是 2, 6, 10, ... 淘汰掉。留下 4, 8, 12, 16, ...
4. 淘汰奇数位:剩下队伍的奇数位是 4, 12, 20, ... 淘汰掉。留下 8, 16, 24, 32, ...
5. 依此类推,剩下的人的编号越来越大,并且都是原来编号的倍数。

当剩下的人数很少时,比如只有两个人:A, B。
A 是第一位,B 是第二位。
这时候淘汰奇数位,就是淘汰 A。B 就幸存了。

我们想知道谁最终能幸存到最后。
想想看,如果一个人的编号是 $2^k$,他总有很大的机会在后面的轮次中幸存。
例如:16, 32, 48, 64, ...
如果轮到淘汰 48(它是当前队伍的第3位),那么 48 就被淘汰了。

这个问题其实是可以转化为一个数学公式或者一个递归过程来解决的。
我们一直在寻找的是那个在所有淘汰轮次中,永远不被选为“奇数位”的人。

每次淘汰的都是当前序列的奇数位。
考虑编号 $N$。
第一次淘汰后,还剩下编号为偶数的。
第二次淘汰,剩下的队伍是 $2, 4, 6, dots, 600$。
我们要看编号 $N$ 在这个新队伍里是奇数位还是偶数位。
如果 $N$ 原来是 $2k$,那么它在新队伍里的位置是 $k$。
如果 $k$ 是奇数,那么 $N$ 被淘汰。
如果 $k$ 是偶数,那么 $N$ 留下。

所以,第一次淘汰后,留下 $N$ 要求 $N$ 是偶数。
第二次淘汰后,留下 $N$ 要求 $N$ 是偶数,并且其在“偶数队伍”中的位置(也就是 $N/2$)也是偶数。
这意味着 $N/2$ 必须是 $2 imes ext{something}$,也就是 $N$ 必须是 $4 imes ext{something}$。
也就是说,$N$ 必须是4的倍数。

第三次淘汰:
剩下队伍是 $4, 8, 12, 16, dots$
编号为 $N$ 的人(我们已经知道 $N$ 是4的倍数)在这个队伍里的位置是 $N/4$。
如果 $N/4$ 是奇数,则 $N$ 被淘汰。
如果 $N/4$ 是偶数,则 $N$ 留下。
这意味着 $N$ 必须是 $4 imes ( ext{偶数}) = 4 imes (2 imes ext{something}) = 8 imes ext{something}$。
也就是说,$N$ 必须是8的倍数。

以此类推,要能幸存下来,一个人的编号 $N$ 必须是 $2^m$ 的倍数,其中 $m$ 是淘汰的轮次数。

我们总共有600个人。
这个过程会一直进行,直到只剩下一个人。

考虑一个人的编号 $N$。
第一次淘汰:如果 $N$ 是奇数,被淘汰。
剩下的人编号为 $2, 4, 6, dots, 600$。

第二次淘汰:
这些人编号是 $2 imes 1, 2 imes 2, 2 imes 3, dots, 2 imes 300$。
淘汰的是第 $1, 3, 5, dots$ 位的人。
也就是 $2 imes 1, 2 imes 3, 2 imes 5, dots$
所以淘汰的是 $2, 6, 10, 14, dots$
这些人对应的原编号是 $2 imes (2k1)$,即 $4k2$。
剩下的人编号是 $2 imes 2, 2 imes 4, 2 imes 6, dots$
也就是 $4, 8, 12, 16, dots$
这些人对应的原编号是 $2 imes (2k)$,即 $4k$。

第三次淘汰:
剩下人编号是 $4 imes 1, 4 imes 2, 4 imes 3, dots, 4 imes 150$。
淘汰的是第 $1, 3, 5, dots$ 位的人。
也就是 $4 imes 1, 4 imes 3, 4 imes 5, dots$
所以淘汰的是 $4, 12, 20, 28, dots$
这些人对应的原编号是 $4 imes (2k1)$,即 $8k4$。
剩下的人编号是 $4 imes 2, 4 imes 4, 4 imes 6, dots$
也就是 $8, 16, 24, 32, dots$
这些人对应的原编号是 $4 imes (2k)$,即 $8k$。

规律非常明显:
经过 $m$ 轮淘汰后,剩下的人编号都是 $2^m$ 的倍数。
具体来说,剩下的人的集合是 ${ N mid 1 le N le 600, N = 2^m imes k, k ext{ 是奇数} }$。

谁最安全?就是谁最晚被淘汰。
我们一直在关注那些编号是2的幂次的人。
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024...

在我们的600人队伍里,编号是2的幂次的人有:
1, 2, 4, 8, 16, 32, 64, 128, 256, 512。

让我们追踪这些人的命运:
1号: 第一次被淘汰(奇数位)。
2号: 第一次留下。第二次是队伍的第1位(奇数位),被淘汰。
4号: 第一次留下。第二次是队伍的第2位(偶数位),留下。第三次是队伍的第1位(奇数位),被淘汰。
8号: 第一次留下。第二次是队伍的第4位(偶数位),留下。第三次是队伍的第2位(偶数位),留下。第四次是队伍的第1位(奇数位),被淘汰。
16号: 一直到第四次都是偶数位,留下。第五次是队伍的第1位(奇数位),被淘汰。
32号: 一直到第五次都是偶数位,留下。第六次是队伍的第1位(奇数位),被淘汰。
64号: 一直到第六次都是偶数位,留下。第七次是队伍的第1位(奇数位),被淘汰。
128号: 一直到第七次都是偶数位,留下。第八次是队伍的第1位(奇数位),被淘汰。
256号: 一直到第八次都是偶数位,留下。第九次是队伍的第1位(奇数位),被淘汰。
512号: 一直到第九次都是偶数位,留下。第十次是队伍的第1位(奇数位),被淘汰。

看起来,编号是 $2^k$ 的人,会在第 $k+1$ 轮被淘汰(如果 $2^k$ 本身就是第1位的话)。
但是这里的“第1位”是指在当前队伍里的位置。

让我们更仔细地跟踪 512 号:
开始: 1, 2, ..., 512, ..., 600
第一轮淘汰奇数位: 剩下 2, 4, ..., 512, ..., 600 (512是第 256 位)
第二轮淘汰奇数位: 剩下 4, 8, ..., 512, ... (512是第 $256/2 = 128$ 位)
第三轮淘汰奇数位: 剩下 8, 16, ..., 512, ... (512是第 $128/2 = 64$ 位)
第四轮淘汰奇数位: 剩下 16, 32, ..., 512, ... (512是第 $64/2 = 32$ 位)
第五轮淘汰奇数位: 剩下 32, 64, ..., 512, ... (512是第 $32/2 = 16$ 位)
第六轮淘汰奇数位: 剩下 64, 128, ..., 512, ... (512是第 $16/2 = 8$ 位)
第七轮淘汰奇数位: 剩下 128, 256, 384, 512, ... (512是第 $8/2 = 4$ 位)
第八轮淘汰奇数位: 剩下 256, 512, ... (512是第 $4/2 = 2$ 位)
第九轮淘汰奇数位: 剩下 512, ... (512是第 $2/2 = 1$ 位)
第十轮淘汰奇数位: 512 是队伍的第1位(奇数位),所以 512 号被淘汰。

这意味着,编号是 2 的幂次方的人,会被淘汰得越来越晚。
问题是,谁是最安全的?也就是说,谁是最后一个幸存者?

让我们反过来想。谁会被淘汰?
1号,第一轮淘汰。
3号,第一轮淘汰。
5号,第一轮淘汰。
...
2号,第二轮淘汰(在 2, 4, 6, ... 队伍里是第1位)。
6号,第二轮淘汰(在 2, 4, 6, ... 队伍里是第3位)。
10号,第二轮淘汰(在 2, 4, 6, ... 队伍里是第5位)。
...

谁是最后的幸存者?我们应该寻找那个在所有轮次中,总是在偶数位置上的人。

关键点: 每次淘汰的是“奇数位”。
假设我们知道最后剩下一个人。这个人是谁?

这其实是一个经典的数学问题,跟“约瑟夫问题”相似,但规则略有不同。
约瑟夫问题的标准版本是每隔 $m$ 个人杀掉一个。这里的规则是每次淘汰“奇数位”。

可以这么看:每次淘汰掉一半的人(大约)。
总共是600人。
第一次淘汰:剩下300人。
第二次淘汰:剩下150人。
第三次淘汰:剩下75人。
第四次淘汰:剩下大约37人。
第五次淘汰:剩下大约18人。
第六次淘汰:剩下大约9人。
第七次淘汰:剩下大约4人。
第八次淘汰:剩下大约2人。
第九次淘汰:剩下1人。

那么,谁最有可能是这最后一个人?
思考一下,如果一个人一直都能保持在偶数位,他就安全。
编号为 $2^k$ 的人,直到第 $k$ 轮淘汰时,他都在偶数位。

2号,在1、2轮是奇数位,被淘汰。
4号,在1、2、3轮是偶数位,在4轮是奇数位,被淘汰。
8号,在1、2、3、4轮是偶数位,在5轮是奇数位,被淘汰。
16号,在15轮是偶数位,在6轮是奇数位,被淘汰。
32号,在16轮是偶数位,在7轮是奇数位,被淘汰。
64号,在17轮是偶数位,在8轮是奇数位,被淘汰。
128号,在18轮是偶数位,在9轮是奇数位,被淘汰。
256号,在19轮是偶数位,在10轮是奇数位,被淘汰。
512号,在110轮是偶数位,在11轮是奇数位,被淘汰。

我们有600个人。最大的一位数是 600。
我们需要找到一个数字 $N$,使得在所有淘汰过程中,它都尽量晚被淘汰。
这个淘汰过程相当于不断地将序列进行“删除偶数下标元素”的操作。

可以进行模拟,或者找规律。
让我们看看剩下的元素序列的变化:
初始:1, 2, 3, ..., 600
第1轮:2, 4, 6, ..., 600
第2轮:4, 8, 12, ..., 600 (实际上是 $4 imes 1, 4 imes 2, ..., 4 imes 150$)
第3轮:8, 16, 24, ..., 592 (实际上是 $8 imes 1, 8 imes 2, ..., 8 imes 75$)
第4轮:16, 32, 48, ..., 592 (实际上是 $16 imes 1, 16 imes 2, ..., 16 imes 37$)
第5轮:32, 64, 96, ..., 576 (实际上是 $32 imes 1, 32 imes 2, ..., 32 imes 18$)
第6轮:64, 128, 192, ..., 576 (实际上是 $64 imes 1, 64 imes 2, ..., 64 imes 9$)
第7轮:128, 256, 384, 512 (实际上是 $128 imes 1, 128 imes 2, 128 imes 3, 128 imes 4$)
第8轮:256, 512 (实际上是 $256 imes 1, 256 imes 2$)
第9轮:512 (实际上是 $512 imes 1$)

在这个模拟过程中,512号是最后一个被淘汰的。
为什么?
因为每次淘汰的是“奇数位”。
当队伍剩下 256, 512 这两人时,256号是第一位(奇数位),512号是第二位(偶数位)。
所以,下一次淘汰的就是256号。留下512号。

所以,最安全的是 512 号。

解释一下为什么 512 号是最安全的:
1. 编号的结构: 每次淘汰的都是当前序列的奇数位。这意味着,如果一个人总能保持在偶数位,他就不会被淘汰。
2. 2的幂次优势: 编号为 $2^k$ 的人,在经过 $k$ 轮淘汰后,会变成当前队伍的第1位(奇数位),然后被淘汰。
1号是 $2^0$,第1轮被淘汰。
2号是 $2^1$,第2轮被淘汰(在 2,4,6,...里是第1位)。
4号是 $2^2$,第3轮被淘汰(在 4,8,12,...里是第1位)。
...
512号是 $2^9$,在经过9轮(淘汰了 $600 o 300 o 150 o 75 o 37 o 18 o 9 o 4 o 2$ 人后)剩下的队伍里,512号将是第1位。
3. 最终的淘汰过程:
我们有 600 人。
最后剩下的几个人可能是 256 和 512。
在之前的轮次中,他们都成功避开了被淘汰的命运,一直位于偶数位置。
当队伍只剩下这两个人时:
256号 是队伍的第1位(奇数位)。
512号 是队伍的第2位(偶数位)。
按照规则,“随机杀掉一个奇数位的人”,256号就会被淘汰。
这时,队伍里只剩下512号一个人,他就是最后的幸存者。

因此,512号是最安全、最不可能被淘汰的人。他的编号是最大的那个不超过600的2的幂次方。

再确认一下,有没有其他编号的人比512号更安全?
比512号大的有 513 到 600。
例如 576 号:
576 = 18 32
它在 32 的倍数序列里是第 18 位。
在第5轮淘汰后,剩下 32, 64, 96, ..., 576。
576 是这队伍的第 18 位(偶数位),留下。
下一轮是 64 的倍数,576 在这个序列里是 $576/64 = 9$ 位。
在第6轮淘汰时,队伍是 64, 128, ..., 576。576是第9位(奇数位),所以 576 号会被淘汰。

所以,编号是 $2^k$ 的人,确实能坚持到最后。
我们需要找到最大的 $2^k le 600$。
$2^8 = 256$
$2^9 = 512$
$2^{10} = 1024$
所以最大的就是 512。

如果题目是“每次随机从队伍中删除一个编号为奇数的人”,那答案就完全不同了。但规则是“奇数位”。

结论:
经过分析,每一次淘汰的都是当前队伍的奇数位。这意味着,编号越是能够通过不断除以2来保持在偶数位置上,就越是安全。最终,编号为 512 的人,由于它是 600 以内最大的 2 的幂次方,能够坚持到最后。当队伍只剩下 256 和 512 时,256 作为奇数位被淘汰,512 作为偶数位而幸存。

网友意见

user avatar

修正之后的结论:存活回合数期望最大的应该是2,但最可能成为最后一个存活的人的是600。

我们来研究M个人杀N次的情况下,每个位置被杀的概率。

可以用递推法计算。首先2个人杀一次的情况下,2一定是最好的,,。M个人杀一次的情况下,偶数被杀概率为0,奇数被杀概率相等:,

考虑M+1个人杀N+1次的情况,则很容易得到:

我们定性分析一下这个式子,无论奇数还是偶数,都从(M,N)的情况中,继承自己和前一项的“阵亡”概率,同时补上自己是奇数(有被杀概率)或者是偶数(无被杀概率)的修正值。k越小,前一项加权越小,后一项加权越大。奇数项有额外的加成。这样,k比较小的情况下,奇数项和偶数项的差异越来越大;而k越大,由于前后两项平均、甚至前项比例超过后项的效果,奇数项和偶数项的差距变得越来越小。

迭代下去的结果大致是一个上下波动然后衰减的样式:1的被杀概率最大,2最小,3又变大但小于1,4又变小但大于2,依次类推。M和N都比较大的时候,靠后位置的奇数位置、偶数位置差异变得很小,因为它们经常相互转换。而1永远是奇数;2只有很小的概率会转换成1。N越大,存活概率的绝对值都变小,但存活概率与前后位置的关系变得更大,2的相对安全优势也越明显。如果考虑最后一个存活的人的比例的话,N很大的情况下,2的优势会很明显。

====================================================================

事实证明全凭臆想是不好的……这里忽略了一件事,一开始在2,和最后几轮在2,意义是完全不同的。一开始奇数多,每个奇数被杀概率比较小,而最后几轮被杀概率严重提高,而一开始在2的,很容易就滑到1去了。还是老老实实算一下递推式……

存活概率:

杀至最后一人的存活概率。这也太直了吧!

但其实并不是完美直线,而是奇数偶数一组跳变的,1的存活概率是0,(2,3)的存活概率几乎一样,(4,5)的存活概率几乎一样,依次类推,所以最后存活概率最大的是600,它存活的概率几乎就是1/300。

实际上似乎有

我们代回去检验一下:

这提示我们也许应该用存活概率来表示递推式,改写一下,用Q(k; M, N)来表示存活概率:

的确可以去掉那个常数项,改写成齐次的递推式。

在N不为M-1的时候,得到的结果跟之前的分析基本一致(Q(600,300)):

(0实际上是1)

当N增大的时候,这个图也有变化,下图是Q(600,500):

最安全的已经不是2了,而是向后移动,但并没有移动到非常远的地方。

进一步增大的时候(Q(600,550)):

中间大部分地方都变平了,但是注意看那个尾巴,会下降一些,原因不明,但应该不是计算误差,因为随着N增大,这个尾巴变得越来越明显,以至于到599的时候,尾巴变成了整条直线。

更有趣的是这个尾巴的朝向跟N的奇偶性密切相关(Q(600,551)):

尾巴变成向上了。

N接近于599的时候:

Q(600,595)

波动越来越不明显,而尾巴越来越明显。

Q(600,596)

Q(600,597)

Q(600,598)

变成了一个这样的奇怪曲线……

然后599就突变成了直线。只能说,数学真是太奇妙了。

附Python代码:

       def fr(a,b = None):     if b is None:         return a     else:         return float(a) / float(b)  # Uncomment the following line to use fractions  # from fractions import Fraction as fr           def cal_p(m, n):     P = [fr(0)] * (m - n + 1)     for M in range(m - n + 1, m + 1):         P2 = [0] * (M+1)         half = (M + 1) // 2         P.append(fr(0))         for i in range(1, M + 1):             if i % 2 == 0:                 P2[i] = fr(i // 2, half) * P[i-1] + fr(half - i//2, half) * P[i]             else:                 P2[i] = fr(1, half) + fr(i // 2, half) * P[i-1] + fr(half - i//2 - 1, half) * P[i]         P = P2     return P  import matplotlib.pyplot as plt      def plot_q(M,N):     P = cal_p(M,N)     q = [1.0 - p for p in P[1:]]     plt.figure()     plt.plot(q)     plt.show()       

如果考虑存活回合数的期望值的话,由于N很大的时候存活概率本身就比较小,最后的确应该是2的平均存活回合数比较有优势吧。

解释一下当N比较大的时候,为什么随着N的奇偶性变化,最后一段的概率忽大忽小呢?

因为我们的M = 600是个偶数,当杀奇数人的时候,最后一轮排在最后一个位置的人不会被杀,而杀偶数人时,最后这一轮排在最后一个位置的人可能被杀,而就是这一点点差别导致了差异;杀奇数人时,最后一段很容易成为最后一个人,所以存活概率变大了,在杀599人的时候,甚至这是唯一的存活可能性;杀偶数人时,反而是成为倒数第二个人比较划算,所以最后一小段反而概率下降了。

猜一猜,598那个曲线的极值点在什么位置?

在[0,600]的黄金分割点上。

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有