傻子坐飞机问题的求解

昨晚睡觉前刷手机,看到一道傻子坐飞机的题目,是一道概率的题目.想了一下觉得还挺有意思的,写一个比较容易理解的解题方法.首先描述一下问题.

傻子坐飞机:假设有n个人(编号分别为从1,2,3…,n-1,n)要上飞机坐在n个座位上,飞机上的n个座位也有相应的编号1,2,3,…,n-1,n,假设每个人的座位选择规则为:

  1. 第一个人是个傻子,他上了飞机后会从n个座位中随机选择一个坐下.
  2. 除了第一个傻子以外,其余每个人上了飞机后,
    2.1 如果他的座位没有被其他人占领,那么他一定要坐在自己的位置上.
    2.2 如果他的座位已经被其他人占领了,那么他就在剩余没有被占领的座位上随机选择一个位置坐下.

那么在这样的选座位规则下,最后一个上飞机的人,他能坐在自己位置上的概率是p多少?

由于这n个人除了第一个傻子以外,其余的n-1个人是不同的且每个人都有一个相应的座位,所以他登机的顺序没有关系.那么不妨假设登机的顺序为第1号,第2号,…,第n号.我们记 p ( n ) p(n) p(n)为总人数为n时的概率,为了便于理解,我们先来看简单的情况.

n=1时,显然这个人一定可以坐在自己的位置上,即 p ( 1 ) = 1 p(1)=1 p(1)=1.
n=2时,

  1. 如果第1个人坐在自己的位置上,那么最后一个人(也就是第2个人)也可以坐在自己的位置上;
  2. 如果第1个人没有坐在自己的位置(位置1)上,那么最后一个人也不能坐在自己的位置上(位置2)了.

p ( 2 ) = 1 2 ∗ 1 + 1 2 ∗ 0 = 1 2 p(2)=\frac{1}{2}*1+\frac{1}{2}*0=\frac{1}{2} p(2)=211+210=21

n=3时,

  1. 如果第1个人坐在了自己的位置上,那么最后一个人也一定会坐在自己的位置上.
  2. 如果第1个人坐在了第2个位置上,那么剩余的2个人的座位选择相当于n=2时的情况.
  3. 如果第1个人坐在了第3个位置上,那么最后一个人肯定无法坐在自己的位置上.

p ( 2 ) = 1 3 ∗ 1 + 1 3 ∗ p ( 2 ) + 1 3 ∗ 0 = 1 2 p(2)=\frac{1}{3}*1+\frac{1}{3}*p(2)+\frac{1}{3}*0=\frac{1}{2} p(2)=311+31p(2)+310=21

相信大家已经看出了规律,很自然的推广到n个人的情况.一般的,对于n个人上飞机(n>=2),这个过程为:

  1. 如果第1个人坐在了自己的位置上,那么最后一个人也一定会坐在自己的位置上.对应的概率为 p ( n ) 1 = 1 n p(n)_1=\frac{1}{n} p(n)1=n1
    在这里插入图片描述
    2.如果第1个人坐在了第2个位置上,那么可以将第1个人和第2个位置都删掉。
    在这里插入图片描述
    删除后,把第1个位置看做是第2个人对应的新位置,对于第2个人,由于他的座位被傻子占掉了,所以他只能从剩下的没有被占用的座位里随机选择一个,这种行为和问题定义中的傻子的行为是一样的,所以可以把第2个人看做是新的傻子.此时问题转换成了n-1个人上飞机的问题,对应的概率为 p ( n ) 2 = 1 n ∗ p ( n − 1 ) p(n)_2=\frac{1}{n}*p(n-1) p(n)2=n1p(n1)

在这里插入图片描述
3.一般的,假设第1个人选到了第m个位置,对于第2、3、…、m-1个人,他们都可以去选择对应的第2、3、…、m-1的座位,所以这些人和相应的座位都可以被删掉。将第1个位置看做是第m个人对应的新位置,并将第m个人看做新的傻子,问题转化为m个人上飞机,对应的概率为 p ( n ) m = 1 n ∗ p ( m ) p(n)_{m}=\frac{1}{n}*p(m) p(n)m=n1p(m).

在这里插入图片描述
在这里插入图片描述
把所有情况归纳起来得到,
p ( n ) = 1 n ∗ 1 + 1 n ∗ p ( 2 ) + 1 n ∗ p ( 3 ) + . . . + 1 n ∗ p ( n − 2 ) + 1 n ∗ p ( n − 1 ) = 1 n ( p ( 1 ) + p ( 2 ) + . . . + p ( n − 1 ) ) p(n)=\frac{1}{n}*1+\frac{1}{n}*p(2)+\frac{1}{n}*p(3)+...+\frac{1}{n}*p(n-2)+\frac{1}{n}*p(n-1)=\frac{1}{n}(p(1)+p(2)+...+p(n-1)) p(n)=n11+n1p(2)+n1p(3)+...+n1p(n2)+n1p(n1)=n1(p(1)+p(2)+...+p(n1)).
即: p ( n ) = 1 n ∑ i = 1 n − 1 p ( i ) p(n)=\frac{1}{n}\sum_{i=1}^{n-1}p(i) p(n)=n1i=1n1p(i)

我们得到了数列 p ( n ) p(n) p(n)的递推公式,下面来计算一下 p ( n ) p(n) p(n)的通项公式.稍微写两行就能得到结论了,对于 n ≥ 2 n\ge2 n2(n>=2,因为只有这样才能写出前一项n-1对应的概率值,是不是想起了高中做数列题的边界情况,没错这个问题其实就是一道亲切的数列题),有
p ( n ) = 1 n ∑ i = 1 n − 1 p ( i ) p(n)=\frac{1}{n}\sum_{i=1}^{n-1}p(i) p(n)=n1i=1n1p(i)
p ( n − 1 ) = 1 n − 1 ∑ i = 1 n − 2 p ( i ) p(n-1)=\frac{1}{n-1}\sum_{i=1}^{n-2}p(i) p(n1)=n11i=1n2p(i)
将下式代入上式,得到
p ( n ) = 1 n ∑ i = 1 n − 1 p ( i ) = 1 n ∑ i = 1 n − 2 p ( i ) + 1 n ∗ p ( n − 1 ) = 1 n ∑ i = 1 n − 2 p ( i ) + 1 n ∗ 1 n − 1 ∑ i = 1 n − 2 p ( i ) = ( 1 n ( n − 1 ) + 1 n ) ∑ i = 1 n − 2 p ( i ) p(n)=\frac{1}{n}\sum_{i=1}^{n-1}p(i)=\frac{1}{n}\sum_{i=1}^{n-2}p(i)+\frac{1}{n}*p(n-1)=\frac{1}{n}\sum_{i=1}^{n-2}p(i)+\frac{1}{n}*\frac{1}{n-1}\sum_{i=1}^{n-2}p(i)=(\frac{1}{n(n-1)}+\frac{1}{n})\sum_{i=1}^{n-2}p(i) p(n)=n1i=1n1p(i)=n1i=1n2p(i)+n1p(n1)=n1i=1n2p(i)+n1n11i=1n2p(i)=(n(n1)1+n1)i=1n2p(i)
这里用一下裂项, 1 n ( n − 1 ) + 1 n = 1 n − 1 − 1 n + 1 n = 1 n − 1 \frac{1}{n(n-1)}+\frac{1}{n}=\frac{1}{n-1}-\frac{1}{n}+\frac{1}{n}=\frac{1}{n-1} n(n1)1+n1=n11n1+n1=n11,则有,
p ( n ) = ( 1 n ( n − 1 ) + 1 n ) ∑ i = 1 n − 2 p ( i ) = 1 n − 1 ∑ i = 1 n − 2 p ( i ) p(n)=(\frac{1}{n(n-1)}+\frac{1}{n})\sum_{i=1}^{n-2}p(i)=\frac{1}{n-1}\sum_{i=1}^{n-2}p(i) p(n)=(n(n1)1+n1)i=1n2p(i)=n11i=1n2p(i)
于是可以不停的代入不停的裂项,有
p ( n ) = 1 n − 1 ∑ i = 1 n − 2 p ( i ) = 1 n − 2 ∑ i = 1 n − 3 p ( i ) = . . . = 1 2 p ( 1 ) = 1 2 , n ≥ 2 p(n)=\frac{1}{n-1}\sum_{i=1}^{n-2}p(i)=\frac{1}{n-2}\sum_{i=1}^{n-3}p(i)=...=\frac{1}{2}p(1)=\frac{1}{2},n\ge2 p(n)=n11i=1n2p(i)=n21i=1n3p(i)=...=21p(1)=21,n2

于是得到 p ( n ) p(n) p(n)的通项公式为,
p ( n ) = { 1 , n = 1 1 2 , n ≥ 2 p(n)=\left\{ \begin{aligned} 1, n=1 \\ \frac{1}{2}, n\ge2 \end{aligned} \right. p(n)=1,n=121,n2
这是一个挺有意思的题目,当只有一个人时候,概率显然为1,当人数大于1时,结果始终为1/2,和人数n没有关系.
看到这个结论让我不禁对上述求解过程有了质疑,上述的求解过程又是一种"僵硬"的方法,所谓僵硬是指完全拿递推公式硬算出来的,应该是有一种更优雅的思路,能够直接得出结果为常数.暂时还没有想出来,等我想明白的时候再来更新吧.

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值