傻子上飞机问题

来源:互联网 发布:java项目业务流程 编辑:程序博客网 时间:2024/05/01 01:39
      这是一个很有趣的数学问题,很值得大家去思考。和大家一样,当看到这个问题的时候,用了大量的公式和概率的知识去推算,结果不得而知。

      文:http://blog.csdn.net/fengart/archive/2007/05/11/1603941.aspx
以程序的形式给出了问题的求解,大家可以参考,在此,我向大家介绍我的分析过程,以数学推理的方式而非使用计算机。

题目如下:
100个人排队乘坐有100个座位的飞机,正常情况时每个都都会对号入坐,但是,第一个上飞机的是个傻子,他随机坐了一个位子,接下来的人上飞机时,如果自己座位被人坐了就会随机找个座位坐下,否则就坐自己坐位。问题:最后一个上飞机的人坐到自己座位的概率是多少??

分析由两部分完成,前一部分作为后一部分的基础。

首先证明第100号乘客不是坐在自己的位置上,就是坐到1号位置上。


记j为第j号乘客,s[j]表示第j号座位上的乘客。s[5]=50,表示第50号乘客坐在5号位置上。

假设s[k] = 100(k!=1, i!=100),即100即不坐在第1号和100号座位上。
由于s[k]不等于k且k不等于1(即K不是傻子),因此到k上机时,它的位置已被人占用了,并且也只能被1,2,.., k-1占了位置,
即s[k]<k,与s[k]=100相矛盾,故100只能坐在第1号或100号坐座位上。


下面证明100坐在1号座位和100号座位的机会均等

第一个傻子跑上飞机后,如果它坐在第1号座位上,那么2,3,...,100都坐在自己的座位上,那么100坐在自己的座位上;
如果它坐在100号座位上,那么2,3,...,99都坐在自己的座位上,而100只能坐在1号座位上,那么100不能坐在自己的座位上;
以上两种机会是均等的。

否则傻子坐到另外的座位上记为n1(1<n1<100),那么2,...,n1-1乘客会坐到自己的座位上。

到n1上机后,不能坐在自己的座位上。如果n1坐在1号座位上,那么n1+1,...,100都在坐在自己的座位上;如果n1坐在100号座位上,那么n1+1,...,99都能坐在自己的位置上,100只能坐在1号座位上。这两种情况的机会仍然均等。

否则n1坐到n2号座位上(n1<n2<100),这样n2坐到1号和100号的座位仍是均等的,否则按上述的坐法经过一系列的推导得到nk=99,此时它可以坐到1号和100号座位,机会仍然均等。
故100坐到1号座位和100号座位的机会是均等的……


故答案为50%。我想这是大家始料不及的答案吧。

第一次想到这个答案,我个人觉得不可思异,太有一种美感在里面,这个概率很大,并且
与人数有直接的关系。其实很多数学或者是算法问题都是这样的,经过数学进行分析,结果往往比程序直接求解简单得多了!
原创粉丝点击