在論壇上看到這個
「傻子帶來的問題「:
"100個人排隊乘坐有100個座位的飛機,正常情況時每個都都會對號入坐,但是,第乙個上飛機的是個傻子,他隨機坐了乙個位子,接下來的人上飛機時,如果自己座位被人坐了就會隨機找個座位坐下,否則就坐自己坐位。問題:最後乙個上飛機的人坐到自己座位的概率是多少??" (這題蘊含著乙個前提,所有人都是按次序輪流登記的)
很有意思,我花了很多時間思考。已經有很多人得出了答案1/2,可要麼是用程式算出來的,要麼是用一些費解的方法推導出來的,我怎麼都看不懂。所以我在這裡寫寫我的解法。先說一種比較簡單的推理方法:
把所有人編號,1-100號,每個人的座位也是1-100號。那麼先假設傻子做到了2-99號座位中的乙個,這有98/100的可能性。在這個前提下,考慮一下兩種情況:
1)2-99號乘客有某人做到了傻子的座位。
2)2-99號乘客有某人做到了最後乙個乘客的座位。
稍加思考,你就會明把這兩種情況是互斥的,也就是不能同時發生;它們也是完備的,也就是必定發生乙個。那麼對2-99號乘客來說,傻子的座位和最後乙個乘客的座位地位是完全平等的,所以兩者發生的概率都是1/2。如果事件1發生,那麼最後乙個乘客能做到自己的座位。它總的概率是(98/100)*(1/2)。
那麼再看傻子坐到1或者100號座位的情況。顯然只有前者能使最後乙個乘客坐到自己的座位,那麼它的概率是1/100。
所以綜上所述,最終的概率是(98/100)*(1/2)+1/100=1/2。以上推理是我認為比較簡潔明瞭的乙個,它也說明了無論多少人,結果都是1/2。
當然還有那種更加偏向概率的計算方法,能得出同樣結果。這裡也有兩種方法:
1. 計算100號座位被1-99號乘客中的某人占用的概率。
記第i個乘客占用100號座位的概率是pi。那麼:
p1=1/100,傻子有1/100的機會坐100號座位
p2=(1/100)*(1/99)=p1*(1/(101-i)),也就是2號乘客只有在傻子做了他的座位後才有1/99的機會坐100號座位。
p3=(p1+p2)*(1/(101-i)),也就是3號乘客只有在傻子或2號乘客做了他的座位後才有1/98的機會坐100號座位。而2號乘客坐他的座位的概率等於p2
那麼你馬上能得出pi=(p1+p2+p3+...+p(i-1))*(1/(101-i)),比如p99=(p1+p2+p3+...p98)*(1/2)。
那麼最後的概率是p=1-(p1+p2+p3...p98+p99) [1]。有人用數學歸納法或者程式設計,能算出這個結果是1/2。不過也有避免計算的方法,看一下另一種方法。
2. 計算1號座位被1-99號乘客中某人占用的概率,而這個概率就是最後一人能做上自己座位的概率(請自己思考其正確性)。
記第i個乘客占用1號座位的概率是pi。那麼:
p1=1/100,傻子有1/100的機會坐1號座位
p2=(1/100)*(1/99)=p1*(1/(101-i)),也就是2號乘客只有在傻子做了他的座位後才有1/99的機會坐1號座位。
p3=(p1+p2)*(1/(101-i)),也就是3號乘客只有在傻子或2號乘客做了他的座位後才有1/98的機會坐1號座位。
寫到這裡,你會發現什麼?這個不是與上個方法裡的結論一樣嗎?
所以最後的概率p=p1+p2+p3...p98+p99 [2]
結合方法1和2的結果,把[1]+[2],得2p=1,即p=1/2。
傻子問題總算解決!
我來教您這樣做才叫創業
下午去郵局取信,我看見單位收發室的老湯在信箱旁掏鑰匙,我想他住在單位,犯不著在外面花幾十塊錢開個信箱吧,而且他年紀這麼大了,能有多少信呢。但是他開信箱時還是嚇了我一跳,裡面塞滿了足足有幾十封。他不會和我一樣是個業餘作家吧,留單位位址影響不好,只好在外面弄個單獨信箱?如果真是這樣,那我可對他有了些崇拜...
我終於也碰到volatile這個問題了
以前上arm課,老師講到volatile這個關鍵字時,主要是說他用到更硬體相關的地方。比如我們看到很多關於硬體的標頭檔案的時候,暫存器的定義都是幾乎都是volatile與記憶體位址相結合,因為我們時刻想要的是暫存器的最新值,而volatile這個關鍵字的作用就是告訴編譯器不要對它宣告的變數進行優化,...
但願有人看到這個讓我失眠的問題!
問題一 堆記憶體是不是不一定多大啊?下面這個copy來的測試堆記憶體的程式每次執行的結果都不一樣呢?void main catch std bad alloc 問題二 上面的程式是故意不釋放記憶體,也就是故意讓記憶體洩露,這樣才能測試堆記憶體。只要該程式一結束就自動釋放。不用關閉vs。是這個意思嗎?...