金刚坐飞机问题

题目见编程之美4.1

大体是这样的

大家都在排队上飞机,然后金刚来了,他也有票,但是插队第一个上了飞机,随便找了个座位坐下了,其余人的策略是:

如果自己票上写的座位没被占就按照座位坐,被占了就变身成金刚,随便找地儿坐。问第i个人坐在自己座位的概率是多少?

1..n一共n个座位,为了方便计算起见,我们做一个变换

变换1:金刚的票上的座位是最后一个,也就是第n个,其余人的票和座位再按照原先的顺序排列成1..n-1。

这样并不影响最终的概率,因为如果

1)金刚坐在自己的位置上,那么大家同样都是肯定坐在自己的位置上。

2)如果金刚坐在第i个位置(非他票上的座位)上,那么前i-1个人会坐在自己的位置上,与变换前相同,而第i个人肯定不会坐在自己的位置上,他会在变换前的金刚的座位再加上i+1..n的集合中随机挑一个座位,这也有变换前相同,他挑的座位对于后面人的影响也是与变换前相同的。

 

设F(i,n)为新的n个座位的排列中第i个人坐到自己位置上的概率,那么旧排列中第i个人坐到自己位置的概率就是

F(i,n)       i<j;

F(i-1,n)    i>j;

j为金刚票上的座位

 

那么我们现在来计算F(i,n),后面的讨论全部基于变换后的排列。

对于乘客i,金刚的选择会造成3种情况,假设金刚选择的是j,分别为i<j,i=j,i>j,概率分别为(n-i)/n,1/n,(i-1)/n。

如果i<j,即金刚选择的座位在i的后面(我们做变换1的目的就在于此,如果不做那么还要考虑金刚坐到自己的位置的情况,而他自己的位置却是不确定的),那么乘客i必然会坐到自己的位置,概率为1,(n-i)/n*1

如果i=j,概率为0

如果i>j,那么前j-1个人肯定坐在自己的位置上,而第j个人就变身成了金刚,这样可以看做他就是金刚,他原来的座位就是n。

变换2:前j-1个人是打酱油的,跟后面的事件无关了,因为金刚在j上,所以第j个人变成了金刚2,他的票号是最后一个,j+1..n-1号乘客成了新的受害者,将j+1..n-1从1开始重新编号,座位数变成n-j

故第i个人坐在原来座位的概率为F(i-j,n-j)

所以概率为

 

综上

最后的结果是

F(i,n)       i<j;

F(i-1,n)    i>j;

j为金刚票上的座位

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值