金刚坐飞机问题

这个题目出自微软《编程之美》,原题的解法比较繁琐,有些地方也没有解释得很清楚。这里把原书的方法重新描述了一下,并且给出一个更简单易懂的解法。

原题描述如下:

 

有一架航班要起飞,乘客们正准备按机票号码(1, 2, .., N)依次排队登机。突然来了一只大猩猩(名叫金刚),他也有飞机票,但是他插队第一个登上了飞机,然后随意选了一个座位坐下了。根据社会的和谐程度,其他的乘客有两种反应:

1. 乘客们都义愤填膺,“既然金刚同志不遵守规定,为什么要我遵守?”他们也随意地找座位坐下,并且坚决不让座给其他乘客。

2. 乘客们虽然感到愤怒,但还是以“和谐”为重,如果自己的位置没有被占领,就赶紧坐下,如果自己的位置已经被别人(或者金刚)占了,就随机选择另一个位置坐下。

 在这两种情况下,第i个乘客(除了金刚外)坐到自己原机票位置的概率分别是多少?

 

问题一

我们以前学概率的时候应该都知道,有N张彩票(只有一张会中奖),如果N个人随机抽取一张,那么每个人中奖的几率是一样的。先抽的人并不会比后抽的人中奖概率更高。这道题目如果把坐到第i个位子这个事件比作抽中奖,那么N个人随机选一个位子坐下来的情况下,每个人选中i的概率是一样的。显然,第一个人(金刚)坐在i的概率是1/N,所以每个人坐在i的概率都是1/N。

如果上面这些还不是很理解的话,没关系,下面给出证明。

第一个人坐在i的概率:1 / N

第二个人坐在i的概率 = 第一个人没有坐在i的概率 * 第二个人坐在i的概率 = (N - 1) / N * 1 / (N - 1) = 1 / N。乘法的第二项其实是个条件概率。

以此类推..

第N个人坐在i的概率 = 第一个人没有坐在i的概率 * 第二个人没有坐在i的概率 * .. * 第N个人坐在i的概率 = (N - 1) / N * (N - 2) / (N - 1) * .. * 1 / 2 = 1 / N。

可见,不管是哪个乘客,坐在第i个位置的概率都是 1 / N,当然也包括乘客i自己。

 

问题二

原书解法:

把“第i个乘客坐在自己位子的概率”分解成“如果金刚坐在第x个位子时,第i个乘客坐在自己位子的概率”,先计算后者。如果知道了后者(又是一个条件概率,记为P(i | x)),则根据全概率公式,可以知道第i位乘客坐在自己位置的概率P(i)= 1 / N * Sigma P(i | x)。1 / N是因为金刚坐在各个位子都是等概率的。

那么我们来计算P(i | x)。

显然,金刚若坐在自己的位子(x = 1),所有乘客都会坐到自己的位子上,包括第i个乘客。同样,如果金刚选择第i + 1 ~ N中的某个位子,第i个乘客同样可以坐自己的位置。这两种情况下,P(i | x)= 1。

如果金刚坐在第i个位子,显然,P(i | x)= 0。

如果金刚坐在2 ~ i - 1中的某个位子y,一下子好像没有直接答案。但是问题的关键就在这里。这样考虑,因为金刚选择了y的位子,乘客y必须另选一位。

1. 往前看,只有金刚的1号位子可以选。如果选择1号位,那么1 ~ y都会坐满。这时,乘客i坐到自己位子的概率与“金刚选择1号位,y选择自己的y号位“的概率是一样的(都是1)。

2. 往后看,可以选择y + 1 ~ N中的任何一个(记为z)。”金刚选择y,乘客y选择z情况下“乘客i坐到自己位子的概率,与”金刚选择z,乘客y坐到自己位子情况下“乘客i坐到自己位子的概率应该是相同的。这里,可以想象成乘客y与金刚交换了一下身份而已。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值