概率 递归 算法

有 n 位乘客即将登机,飞机正好有 n 个座位。第一位乘客的票丢了,他随便选了一个座位坐下。剩下的乘客将会:如果他们自己的座位还空着,就坐到自己的座位上,当他们自己的座位被占用时,随机选择求最后一位乘客做到自己座位的概率

思路

第1位乘客选择第1个座位时最后1位乘客坐到正确的座位上的概率加上

第1位乘客选择第2个座位时最后1位乘客坐到正确的座位上的概率加上

第1位乘客选择第3个座位时最后1位乘客坐到正确的座位上的概率加上

............

设一个函数F1(n)代表

第1位乘客随机选择1个座位后最后1个乘客坐到正确作为的概率

条件

1.飞机有n个座位 

2 第1位乘客从n个座位中随机选择一个座位

3 接下来的乘客按照自己原先的座位选择 如果座位空着则选择 如果被占用则随机选择座位


返回

第n位乘客正确坐到自己座位上的概率x

分析

输入为n

1. 第1个乘客坐到第1个座位概率为1/n  第n个乘客做到自己原先的座位上的概率为100%

2. 第1个乘客做到第n个座位概率为1/n 第n个乘客坐到自己原先的座位上的概率为0%

3. 第1个乘客做到第1个到第n个座位之间第i个座位概率为1/n第n位乘客坐到自己原先的座位

   上的概率为F2(a)


F2(a)的解释

第2位乘客到地i-1个乘客一定可以坐到正确的座位 总共剩下的不确定的座位为n-i+1

a=n-i+1

此时F2(a)相当于  

条件

1.飞机有a个座位   

2 第1位乘客从a个座位中随机选择一个座位

3 接下来的乘客按照自己原先的座位选择 如果座位空着则选择 如果被占用则随机选择座位


返回

第a位乘客正确坐到自己座位上的概率x

通过分析F2(a)F1(n)可以发现两个函数的对于输入的处理逻辑完全一致因此F1()=F2()=F()

根据解题的思路可以把题目的解写成

F(n)=1/n*1+1/n*0+\sum_{i=n-1}^{i=2}1/n*F(n-i+1)

化简....省略

经过化简可得F(n)=F(n-1)

n=1 返回 1

n=2 返回 0.5

n>2 返回 0.5

            

            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值