傻子坐飞机问题的求解
昨晚睡覺前刷手機,看到一道傻子坐飛機的題目,是一道概率的題目.想了一下覺得還挺有意思的,寫一個比較容易理解的解題方法.首先描述一下問題.
傻子坐飛機:假設有n個人(編號分別為從1,2,3…,n-1,n)要上飛機坐在n個座位上,飛機上的n個座位也有相應的編號1,2,3,…,n-1,n,假設每個人的座位選擇規則為:
2.1 如果他的座位沒有被其他人占領,那么他一定要坐在自己的位置上.
2.2 如果他的座位已經被其他人占領了,那么他就在剩余沒有被占領的座位上隨機選擇一個位置坐下.
那么在這樣的選座位規則下,最后一個上飛機的人,他能坐在自己位置上的概率是p多少?
由于這n個人除了第一個傻子以外,其余的n-1個人是不同的且每個人都有一個相應的座位,所以他登機的順序沒有關系.那么不妨假設登機的順序為第1號,第2號,…,第n號.我們記p(n)p(n)p(n)為總人數為n時的概率,為了便于理解,我們先來看簡單的情況.
n=1時,顯然這個人一定可以坐在自己的位置上,即p(1)=1p(1)=1p(1)=1.
n=2時,
即p(2)=12?1+12?0=12p(2)=\frac{1}{2}*1+\frac{1}{2}*0=\frac{1}{2}p(2)=21??1+21??0=21?
n=3時,
即p(2)=13?1+13?p(2)+13?0=12p(2)=\frac{1}{3}*1+\frac{1}{3}*p(2)+\frac{1}{3}*0=\frac{1}{2}p(2)=31??1+31??p(2)+31??0=21?
相信大家已經看出了規律,很自然的推廣到n個人的情況.一般的,對于n個人上飛機(n>=2),這個過程為:
2.如果第1個人坐在了第2個位置上,那么可以將第1個人和第2個位置都刪掉。
刪除后,把第1個位置看做是第2個人對應的新位置,對于第2個人,由于他的座位被傻子占掉了,所以他只能從剩下的沒有被占用的座位里隨機選擇一個,這種行為和問題定義中的傻子的行為是一樣的,所以可以把第2個人看做是新的傻子.此時問題轉換成了n-1個人上飛機的問題,對應的概率為p(n)2=1n?p(n?1)p(n)_2=\frac{1}{n}*p(n-1)p(n)2?=n1??p(n?1)。
3.一般的,假設第1個人選到了第m個位置,對于第2、3、…、m-1個人,他們都可以去選擇對應的第2、3、…、m-1的座位,所以這些人和相應的座位都可以被刪掉。將第1個位置看做是第m個人對應的新位置,并將第m個人看做新的傻子,問題轉化為m個人上飛機,對應的概率為p(n)m=1n?p(m)p(n)_{m}=\frac{1}{n}*p(m)p(n)m?=n1??p(m).
把所有情況歸納起來得到,
p(n)=1n?1+1n?p(2)+1n?p(3)+...+1n?p(n?2)+1n?p(n?1)=1n(p(1)+p(2)+...+p(n?1))p(n)=\frac{1}{n}*1+\frac{1}{n}*p(2)+\frac{1}{n}*p(3)+...+\frac{1}{n}*p(n-2)+\frac{1}{n}*p(n-1)=\frac{1}{n}(p(1)+p(2)+...+p(n-1))p(n)=n1??1+n1??p(2)+n1??p(3)+...+n1??p(n?2)+n1??p(n?1)=n1?(p(1)+p(2)+...+p(n?1)).
即:p(n)=1n∑i=1n?1p(i)p(n)=\frac{1}{n}\sum_{i=1}^{n-1}p(i)p(n)=n1?∑i=1n?1?p(i)
我們得到了數列p(n)p(n)p(n)的遞推公式,下面來計算一下p(n)p(n)p(n)的通項公式.稍微寫兩行就能得到結論了,對于n≥2n\ge2n≥2(n>=2,因為只有這樣才能寫出前一項n-1對應的概率值,是不是想起了高中做數列題的邊界情況,沒錯這個問題其實就是一道親切的數列題),有
p(n)=1n∑i=1n?1p(i)p(n)=\frac{1}{n}\sum_{i=1}^{n-1}p(i)p(n)=n1?∑i=1n?1?p(i)
p(n?1)=1n?1∑i=1n?2p(i)p(n-1)=\frac{1}{n-1}\sum_{i=1}^{n-2}p(i)p(n?1)=n?11?∑i=1n?2?p(i)
將下式代入上式,得到
p(n)=1n∑i=1n?1p(i)=1n∑i=1n?2p(i)+1n?p(n?1)=1n∑i=1n?2p(i)+1n?1n?1∑i=1n?2p(i)=(1n(n?1)+1n)∑i=1n?2p(i)p(n)=\frac{1}{n}\sum_{i=1}^{n-1}p(i)=\frac{1}{n}\sum_{i=1}^{n-2}p(i)+\frac{1}{n}*p(n-1)=\frac{1}{n}\sum_{i=1}^{n-2}p(i)+\frac{1}{n}*\frac{1}{n-1}\sum_{i=1}^{n-2}p(i)=(\frac{1}{n(n-1)}+\frac{1}{n})\sum_{i=1}^{n-2}p(i)p(n)=n1?∑i=1n?1?p(i)=n1?∑i=1n?2?p(i)+n1??p(n?1)=n1?∑i=1n?2?p(i)+n1??n?11?∑i=1n?2?p(i)=(n(n?1)1?+n1?)∑i=1n?2?p(i)
這里用一下裂項,1n(n?1)+1n=1n?1?1n+1n=1n?1\frac{1}{n(n-1)}+\frac{1}{n}=\frac{1}{n-1}-\frac{1}{n}+\frac{1}{n}=\frac{1}{n-1}n(n?1)1?+n1?=n?11??n1?+n1?=n?11?,則有,
p(n)=(1n(n?1)+1n)∑i=1n?2p(i)=1n?1∑i=1n?2p(i)p(n)=(\frac{1}{n(n-1)}+\frac{1}{n})\sum_{i=1}^{n-2}p(i)=\frac{1}{n-1}\sum_{i=1}^{n-2}p(i)p(n)=(n(n?1)1?+n1?)∑i=1n?2?p(i)=n?11?∑i=1n?2?p(i)
于是可以不停的代入不停的裂項,有
p(n)=1n?1∑i=1n?2p(i)=1n?2∑i=1n?3p(i)=...=12p(1)=12,n≥2p(n)=\frac{1}{n-1}\sum_{i=1}^{n-2}p(i)=\frac{1}{n-2}\sum_{i=1}^{n-3}p(i)=...=\frac{1}{2}p(1)=\frac{1}{2},n\ge2p(n)=n?11?∑i=1n?2?p(i)=n?21?∑i=1n?3?p(i)=...=21?p(1)=21?,n≥2
于是得到p(n)p(n)p(n)的通項公式為,
p(n)={1,n=112,n≥2p(n)=\left\{ \begin{aligned} 1, n=1 \\ \frac{1}{2}, n\ge2 \end{aligned} \right.p(n)=????1,n=121?,n≥2?
這是一個挺有意思的題目,當只有一個人時候,概率顯然為1,當人數大于1時,結果始終為1/2,和人數n沒有關系.
看到這個結論讓我不禁對上述求解過程有了質疑,上述的求解過程又是一種"僵硬"的方法,所謂僵硬是指完全拿遞推公式硬算出來的,應該是有一種更優雅的思路,能夠直接得出結果為常數.暫時還沒有想出來,等我想明白的時候再來更新吧.
總結
以上是生活随笔為你收集整理的傻子坐飞机问题的求解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DLL动态链接库的工作原理
- 下一篇: R 升级到 4 之后的悲剧