傻子上飞机问题

来源:互联网 发布:用友软件畅捷通注册 编辑:程序博客网 时间:2024/04/30 19:44

题目:
"100个人排队乘坐有100个座位的飞机,正常情况时每个都都会对号入坐,但是,第1个上飞机的是个傻子,他随机坐了一个位子,接下来的人上飞机时,如果自己座位被人坐,会随机找个座位坐下,否则就坐自己坐位。问题:最后一个上飞机的人坐到自己座位率是多少??"
 
郁闷,偶的智商…… 就是不会做这些题。开始认为是1/100,被bs了,然后去网上搜了下,发现居然是1/2!惊讶!
 
之余,偶决定自己作出来看看。 

but,实在是数学不好,只能写了段code,模拟登机的过程。
 
#include
#include
#include
#include
 
#define num 100
 
int seat[num];//0 means not seat, 1 means already been seat.
static int loop = 1000;//run loop times to get the random result.
 
static int choose ();
 
int main (int argc, char articlelist_1442255022_0_1.html articlelist_1442255022_0_2.html articlelist_1442255022_0_3.html blog_55f710ae010002t9.html blog_55f710ae010002ta.html blog_55f710ae010002u6.html blog_55f710ae010002xx.html blog_55f710ae01000308.html blog_55f710ae01000380.html blog_55f710ae010003cc.html blog_55f710ae010003dj.html blog_55f710ae010004d0.html blog_55f710ae010004d2.html blog_55f710ae010004d3.html blog_55f710ae010004d7.html blog_55f710ae010004il.html blog_55f710ae010004sf.html blog_55f710ae01000523.html blog_55f710ae010005cn.html blog_55f710ae010005g8.html blog_55f710ae010005ie.html blog_55f710ae010005y5.html blog_55f710ae0100068z.html blog_55f710ae01000690.html blog_55f710ae010006dv.html blog_55f710ae010006hz.html blog_55f710ae010006jx.html blog_55f710ae010006me.html blog_55f710ae010006oi.html blog_55f710ae010006oy.html blog_55f710ae010006y8.html blog_55f710ae0100071z.html blog_55f710ae01000768.html blog_55f710ae010007a7.html blog_55f710ae010007a8.html blog_55f710ae010007hp.html blog_55f710ae010007jj.html blog_55f710ae010007kb.html blog_55f710ae010007oq.html blog_55f710ae01000859.html blog_55f710ae01000863.html blog_55f710ae01000866.html blog_55f710ae01000867.html blog_55f710ae01000885.html blog_55f710ae010008ao.html blog_55f710ae010008aq.html blog_55f710ae010008as.html blog_55f710ae010008d4.html blog_55f710ae010008dd.html blog_55f710ae010008e6.html blog_55f710ae010008h3.html blog_55f710ae010008iv.html blog_55f710ae010008j4.html blog_55f710ae010008j8.html blog_55f710ae010008jl.html blog_55f710ae010008jo.html blog_55f710ae010008pm.html blog_55f710ae010008ux.html blog_55f710ae010008uy.html blog_55f710ae010008v8.html blog_55f710ae0100096s.html blog_55f710ae010009e8.html blog_55f710ae010009p6.html blog_55f710ae010009px.html blog_55f710ae010009t3.html blog_55f710ae010009vs.html blog_55f710ae01000az5.html blog_55f710ae01000b58.html blog_55f710ae01000bcr.html blog_55f710ae01000bcu.html blog_55f710ae01000bdh.html blog_55f710ae01007r6i.html blog_55f710ae01007r8p.html blog_55f710ae01007trl.html blog_55f710ae010085a8.html blog_55f710ae010085mq.html blog_55f710ae01008631.html blog_55f710ae010086ok.html blog_55f710ae01008l7n.html blog_55f710ae01008l7y.html blog_55f710ae01008la8.html blog_55f710ae01008pck.html blog_55f710ae01008yyt.html blog_55f710ae01008zc7.html blog_55f710ae01008zcx.html blog_55f710ae01008zdb.html blog_55f710ae010090mc.html blog_55f710ae010096av.html blog_55f710ae010096q7.html blog_55f710ae010096ue.html blog_55f710ae01009bag.html blog_55f710ae01009bdo.html blog_55f710ae01009bf5.html blog_55f710ae01009cey.html blog_55f710ae01009ciy.html blog_55f710ae01009ddf.html cookiecsdn.txt csdn.html dblog_55f710ae010002t9.html dblog_55f710ae010002ta.html dblog_55f710ae010002u6.html dblog_55f710ae010002xx.html dblog_55f710ae01000308.html dblog_55f710ae01000380.html dblog_55f710ae010003cc.html dblog_55f710ae010003dj.html dblog_55f710ae010004d0.html dblog_55f710ae010004d2.html dblog_55f710ae010004d3.html dblog_55f710ae010004d7.html dblog_55f710ae010004il.html dblog_55f710ae010004sf.html dblog_55f710ae01000523.html dblog_55f710ae010005cn.html dblog_55f710ae010005g8.html dblog_55f710ae010005ie.html dblog_55f710ae010005y5.html dblog_55f710ae0100068z.html dblog_55f710ae01000690.html dblog_55f710ae010006dv.html dblog_55f710ae010006hz.html dblog_55f710ae010006jx.html dblog_55f710ae010006me.html dblog_55f710ae010006oi.html dblog_55f710ae010006oy.html dblog_55f710ae010006y8.html dblog_55f710ae0100071z.html dblog_55f710ae01000768.html dblog_55f710ae010007a7.html dblog_55f710ae010007a8.html dblog_55f710ae010007hp.html dblog_55f710ae010007jj.html dblog_55f710ae010007kb.html dblog_55f710ae010007oq.html dblog_55f710ae01000859.html dblog_55f710ae01000863.html dblog_55f710ae01000866.html dblog_55f710ae01000867.html dblog_55f710ae01000885.html dblog_55f710ae010008ao.html dblog_55f710ae010008aq.html dblog_55f710ae010008as.html dblog_55f710ae010008d4.html dblog_55f710ae010008dd.html dblog_55f710ae010008e6.html dblog_55f710ae010008h3.html dblog_55f710ae010008iv.html dblog_55f710ae010008j4.html dblog_55f710ae010008j8.html dblog_55f710ae010008jl.html dblog_55f710ae010008jo.html dblog_55f710ae010008pm.html dblog_55f710ae010008ux.html dblog_55f710ae010008uy.html dblog_55f710ae010008v8.html dblog_55f710ae0100096s.html dblog_55f710ae010009e8.html dblog_55f710ae010009p6.html dblog_55f710ae010009px.html dblog_55f710ae010009t3.html dblog_55f710ae010009vs.html dblog_55f710ae01000az5.html dblog_55f710ae01000b58.html dblog_55f710ae01000bcr.html dblog_55f710ae01000bcu.html getTags.sh tag.txt transBlog.sh url.txt argv)
{
 int l;
 int result[num];
 
 printf("num = %d ", num);
 
 memset(result, 0, num*sizeof(int));
 
 for (l = 0; l < loop; l++)
 {
  int r = choose();
  result[r]++;
 }
 
 for (l = 0; l < num; l++){
  printf("result[%d] = %d ", l, result[l]);
 }
 
 return 0;
}//main
 
static int choose ()
{
 int first, r, j, k;
 
 //All the seat is empty.
 memset(seat, 0, num*sizeof(int));
 
 //The seat the first man seat.
 r = random();
 first = num articlelist_1442255022_0_1.html articlelist_1442255022_0_2.html articlelist_1442255022_0_3.html blog_55f710ae010002t9.html blog_55f710ae010002ta.html blog_55f710ae010002u6.html blog_55f710ae010002xx.html blog_55f710ae01000308.html blog_55f710ae01000380.html blog_55f710ae010003cc.html blog_55f710ae010003dj.html blog_55f710ae010004d0.html blog_55f710ae010004d2.html blog_55f710ae010004d3.html blog_55f710ae010004d7.html blog_55f710ae010004il.html blog_55f710ae010004sf.html blog_55f710ae01000523.html blog_55f710ae010005cn.html blog_55f710ae010005g8.html blog_55f710ae010005ie.html blog_55f710ae010005y5.html blog_55f710ae0100068z.html blog_55f710ae01000690.html blog_55f710ae010006dv.html blog_55f710ae010006hz.html blog_55f710ae010006jx.html blog_55f710ae010006me.html blog_55f710ae010006oi.html blog_55f710ae010006oy.html blog_55f710ae010006y8.html blog_55f710ae0100071z.html blog_55f710ae01000768.html blog_55f710ae010007a7.html blog_55f710ae010007a8.html blog_55f710ae010007hp.html blog_55f710ae010007jj.html blog_55f710ae010007kb.html blog_55f710ae010007oq.html blog_55f710ae01000859.html blog_55f710ae01000863.html blog_55f710ae01000866.html blog_55f710ae01000867.html blog_55f710ae01000885.html blog_55f710ae010008ao.html blog_55f710ae010008aq.html blog_55f710ae010008as.html blog_55f710ae010008d4.html blog_55f710ae010008dd.html blog_55f710ae010008e6.html blog_55f710ae010008h3.html blog_55f710ae010008iv.html blog_55f710ae010008j4.html blog_55f710ae010008j8.html blog_55f710ae010008jl.html blog_55f710ae010008jo.html blog_55f710ae010008pm.html blog_55f710ae010008ux.html blog_55f710ae010008uy.html blog_55f710ae010008v8.html blog_55f710ae0100096s.html blog_55f710ae010009e8.html blog_55f710ae010009p6.html blog_55f710ae010009px.html blog_55f710ae010009t3.html blog_55f710ae010009vs.html blog_55f710ae01000az5.html blog_55f710ae01000b58.html blog_55f710ae01000bcr.html blog_55f710ae01000bcu.html blog_55f710ae01000bdh.html blog_55f710ae01007r6i.html blog_55f710ae01007r8p.html blog_55f710ae01007trl.html blog_55f710ae010085a8.html blog_55f710ae010085mq.html blog_55f710ae01008631.html blog_55f710ae010086ok.html blog_55f710ae01008l7n.html blog_55f710ae01008l7y.html blog_55f710ae01008la8.html blog_55f710ae01008pck.html blog_55f710ae01008yyt.html blog_55f710ae01008zc7.html blog_55f710ae01008zcx.html blog_55f710ae01008zdb.html blog_55f710ae010090mc.html blog_55f710ae010096av.html blog_55f710ae010096q7.html blog_55f710ae010096ue.html blog_55f710ae01009bag.html blog_55f710ae01009bdo.html blog_55f710ae01009bf5.html blog_55f710ae01009cey.html blog_55f710ae01009ciy.html blog_55f710ae01009ddf.html cookiecsdn.txt csdn.html dblog_55f710ae010002t9.html dblog_55f710ae010002ta.html dblog_55f710ae010002u6.html dblog_55f710ae010002xx.html dblog_55f710ae01000308.html dblog_55f710ae01000380.html dblog_55f710ae010003cc.html dblog_55f710ae010003dj.html dblog_55f710ae010004d0.html dblog_55f710ae010004d2.html dblog_55f710ae010004d3.html dblog_55f710ae010004d7.html dblog_55f710ae010004il.html dblog_55f710ae010004sf.html dblog_55f710ae01000523.html dblog_55f710ae010005cn.html dblog_55f710ae010005g8.html dblog_55f710ae010005ie.html dblog_55f710ae010005y5.html dblog_55f710ae0100068z.html dblog_55f710ae01000690.html dblog_55f710ae010006dv.html dblog_55f710ae010006hz.html dblog_55f710ae010006jx.html dblog_55f710ae010006me.html dblog_55f710ae010006oi.html dblog_55f710ae010006oy.html dblog_55f710ae010006y8.html dblog_55f710ae0100071z.html dblog_55f710ae01000768.html dblog_55f710ae010007a7.html dblog_55f710ae010007a8.html dblog_55f710ae010007hp.html dblog_55f710ae010007jj.html dblog_55f710ae010007kb.html dblog_55f710ae010007oq.html dblog_55f710ae01000859.html dblog_55f710ae01000863.html dblog_55f710ae01000866.html dblog_55f710ae01000867.html dblog_55f710ae01000885.html dblog_55f710ae010008ao.html dblog_55f710ae010008aq.html dblog_55f710ae010008as.html dblog_55f710ae010008d4.html dblog_55f710ae010008dd.html dblog_55f710ae010008e6.html dblog_55f710ae010008h3.html dblog_55f710ae010008iv.html dblog_55f710ae010008j4.html dblog_55f710ae010008j8.html dblog_55f710ae010008jl.html dblog_55f710ae010008jo.html dblog_55f710ae010008pm.html dblog_55f710ae010008ux.html dblog_55f710ae010008uy.html dblog_55f710ae010008v8.html dblog_55f710ae0100096s.html dblog_55f710ae010009e8.html dblog_55f710ae010009p6.html dblog_55f710ae010009px.html dblog_55f710ae010009t3.html dblog_55f710ae010009vs.html dblog_55f710ae01000az5.html dblog_55f710ae01000b58.html dblog_55f710ae01000bcr.html dblog_55f710ae01000bcu.html getTags.sh tag.txt transBlog.sh url.txt ((double)r/(double)RAND_MAX);
 seat[first] = 1;
 
 //The man from 1 to num-1 seat.
 for (j = 1; j < num; j++)
 {
  if (seat[j] == 0){
   seat[j] = 1;//Seat to his own seat.
   k = j;
  }else{
   //Find the seat to set.
   do{
    r = random();
    k = num articlelist_1442255022_0_1.html articlelist_1442255022_0_2.html articlelist_1442255022_0_3.html blog_55f710ae010002t9.html blog_55f710ae010002ta.html blog_55f710ae010002u6.html blog_55f710ae010002xx.html blog_55f710ae01000308.html blog_55f710ae01000380.html blog_55f710ae010003cc.html blog_55f710ae010003dj.html blog_55f710ae010004d0.html blog_55f710ae010004d2.html blog_55f710ae010004d3.html blog_55f710ae010004d7.html blog_55f710ae010004il.html blog_55f710ae010004sf.html blog_55f710ae01000523.html blog_55f710ae010005cn.html blog_55f710ae010005g8.html blog_55f710ae010005ie.html blog_55f710ae010005y5.html blog_55f710ae0100068z.html blog_55f710ae01000690.html blog_55f710ae010006dv.html blog_55f710ae010006hz.html blog_55f710ae010006jx.html blog_55f710ae010006me.html blog_55f710ae010006oi.html blog_55f710ae010006oy.html blog_55f710ae010006y8.html blog_55f710ae0100071z.html blog_55f710ae01000768.html blog_55f710ae010007a7.html blog_55f710ae010007a8.html blog_55f710ae010007hp.html blog_55f710ae010007jj.html blog_55f710ae010007kb.html blog_55f710ae010007oq.html blog_55f710ae01000859.html blog_55f710ae01000863.html blog_55f710ae01000866.html blog_55f710ae01000867.html blog_55f710ae01000885.html blog_55f710ae010008ao.html blog_55f710ae010008aq.html blog_55f710ae010008as.html blog_55f710ae010008d4.html blog_55f710ae010008dd.html blog_55f710ae010008e6.html blog_55f710ae010008h3.html blog_55f710ae010008iv.html blog_55f710ae010008j4.html blog_55f710ae010008j8.html blog_55f710ae010008jl.html blog_55f710ae010008jo.html blog_55f710ae010008pm.html blog_55f710ae010008ux.html blog_55f710ae010008uy.html blog_55f710ae010008v8.html blog_55f710ae0100096s.html blog_55f710ae010009e8.html blog_55f710ae010009p6.html blog_55f710ae010009px.html blog_55f710ae010009t3.html blog_55f710ae010009vs.html blog_55f710ae01000az5.html blog_55f710ae01000b58.html blog_55f710ae01000bcr.html blog_55f710ae01000bcu.html blog_55f710ae01000bdh.html blog_55f710ae01007r6i.html blog_55f710ae01007r8p.html blog_55f710ae01007trl.html blog_55f710ae010085a8.html blog_55f710ae010085mq.html blog_55f710ae01008631.html blog_55f710ae010086ok.html blog_55f710ae01008l7n.html blog_55f710ae01008l7y.html blog_55f710ae01008la8.html blog_55f710ae01008pck.html blog_55f710ae01008yyt.html blog_55f710ae01008zc7.html blog_55f710ae01008zcx.html blog_55f710ae01008zdb.html blog_55f710ae010090mc.html blog_55f710ae010096av.html blog_55f710ae010096q7.html blog_55f710ae010096ue.html blog_55f710ae01009bag.html blog_55f710ae01009bdo.html blog_55f710ae01009bf5.html blog_55f710ae01009cey.html blog_55f710ae01009ciy.html blog_55f710ae01009ddf.html cookiecsdn.txt csdn.html dblog_55f710ae010002t9.html dblog_55f710ae010002ta.html dblog_55f710ae010002u6.html dblog_55f710ae010002xx.html dblog_55f710ae01000308.html dblog_55f710ae01000380.html dblog_55f710ae010003cc.html dblog_55f710ae010003dj.html dblog_55f710ae010004d0.html dblog_55f710ae010004d2.html dblog_55f710ae010004d3.html dblog_55f710ae010004d7.html dblog_55f710ae010004il.html dblog_55f710ae010004sf.html dblog_55f710ae01000523.html dblog_55f710ae010005cn.html dblog_55f710ae010005g8.html dblog_55f710ae010005ie.html dblog_55f710ae010005y5.html dblog_55f710ae0100068z.html dblog_55f710ae01000690.html dblog_55f710ae010006dv.html dblog_55f710ae010006hz.html dblog_55f710ae010006jx.html dblog_55f710ae010006me.html dblog_55f710ae010006oi.html dblog_55f710ae010006oy.html dblog_55f710ae010006y8.html dblog_55f710ae0100071z.html dblog_55f710ae01000768.html dblog_55f710ae010007a7.html dblog_55f710ae010007a8.html dblog_55f710ae010007hp.html dblog_55f710ae010007jj.html dblog_55f710ae010007kb.html dblog_55f710ae010007oq.html dblog_55f710ae01000859.html dblog_55f710ae01000863.html dblog_55f710ae01000866.html dblog_55f710ae01000867.html dblog_55f710ae01000885.html dblog_55f710ae010008ao.html dblog_55f710ae010008aq.html dblog_55f710ae010008as.html dblog_55f710ae010008d4.html dblog_55f710ae010008dd.html dblog_55f710ae010008e6.html dblog_55f710ae010008h3.html dblog_55f710ae010008iv.html dblog_55f710ae010008j4.html dblog_55f710ae010008j8.html dblog_55f710ae010008jl.html dblog_55f710ae010008jo.html dblog_55f710ae010008pm.html dblog_55f710ae010008ux.html dblog_55f710ae010008uy.html dblog_55f710ae010008v8.html dblog_55f710ae0100096s.html dblog_55f710ae010009e8.html dblog_55f710ae010009p6.html dblog_55f710ae010009px.html dblog_55f710ae010009t3.html dblog_55f710ae010009vs.html dblog_55f710ae01000az5.html dblog_55f710ae01000b58.html dblog_55f710ae01000bcr.html dblog_55f710ae01000bcu.html getTags.sh tag.txt transBlog.sh url.txt ((double)r/(double)RAND_MAX);
   }while(seat[k] == 1);
 
   seat[k] = 1;
   
  }//Seat to other man's seat. 
 }//for
 
 //Record the num-1's k, which means where the last man set.
 return k;
}
代码不是穷举,而是模拟,所以最后得到的是一个大致不精确的值。在loop为1000的时候,基本上坐第一个位置498次,坐第100个位置502次,可以看到基本上是接近于50%的。

 
还有就是可以去推:
 
当只有3个人ABC的时候,座位可以是123, 213, 231, 321。
当只有4个人ABCD的时候,座位可以是1234, 2134, 2314, 2341, 2431, 3214, 3241, 4231。
……
可以看出50%的概率。
 


另外,摘抄网上搜到的答案 CSDN:
 
分析由两部分完成,前一部分作为后一部分的基础。

首先证明第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]

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

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

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

否则n1坐到n2号座位上(n1 故100坐到1号座位和100号座位的机会是均等的……


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

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

原创粉丝点击