天天看點

幾個反直覺的機率問題

上篇文章 洗牌算法詳解 講到了驗證機率算法的蒙特卡羅方法,今天聊點輕松的内容:幾個和機率相關的有趣問題。

計算機率有下面兩個最簡單的原則:

原則一、計算機率一定要有一個參照系,稱作「樣本空間」,即随機事件可能出現的所有結果。事件 A 發生的機率 = A 包含的樣本點 / 樣本空間的樣本總數。

原則二、計算機率一定要明白,機率是一個連續的整體,不可以把連續的機率分割開,也就是所謂的條件機率。

上述兩個原則高中就學過,但是我們還是很容易犯錯,而且犯錯的流程也有異曲同工之妙:

先是忽略了原則二,錯誤地計算了樣本空間,然後通過原則一算出了錯誤的答案。

下面介紹幾個簡單卻具有迷惑性的問題,分别是男孩女孩問題、生日悖論、三門問題。當然,三門問題可能是大家最耳熟的,是以就多說一些有趣的思考。

PS:我認真寫了 100 多篇原創,手把手刷 200 道力扣題目,全部釋出在 labuladong的算法小抄,持續更新。建議收藏,按照我的文章順序刷題,掌握各種算法套路後投再入題海就如魚得水了。

一、男孩女孩問題

假設有一個家庭,有兩個孩子,現在告訴你其中有一個男孩,請問另一個也是男孩的機率是多少?

很多人,包括我在内,不假思索地回答:1/2 啊,因為另一個孩子要麼是男孩,要麼是女孩,而且機率相等呀。但是實際上,答案是 1/3。

上述思想為什麼錯誤呢?因為沒有正确計算樣本空間,導緻原則一計算錯誤。有兩個孩子,那麼樣本空間為 4,即哥哥妹妹,哥哥弟弟,姐姐妹妹,姐姐弟弟這四種情況。已知有一個男孩,那麼排除姐姐妹妹這種情況,是以樣本空間變成 3。另一個孩子也是男孩隻有哥哥弟弟這 1 種情況,是以機率為 1/3。

為什麼計算樣本空間會出錯呢?因為我們忽略了條件機率,即混淆了下面兩個問題:

這個家庭隻有一個孩子,這個孩子是男孩的機率是多少?

這個家庭有兩個孩子,其中一個是男孩,另一個孩子是男孩的機率是多少?

根據原則二,機率問題是連續的,不可以把上述兩個問題混淆。第二個問題需要用條件機率,即求一個孩子是男孩的條件下,另一個也是男孩的機率。運用條件機率的公式也很好算,就不多說了。

通過這個問題,讀者應該了解兩個機率計算原則的關系了,最具有迷惑性的就是條件機率的忽視。為了不要被迷惑,最簡單的辦法就是把所有可能結果窮舉出來。

最後,對于此問題我見過一個很奇葩的質疑:如果這兩個孩子是雙胞胎,不存在年齡上的差異怎麼辦?

我竟然覺得有那麼一絲道理!但其實,我們隻是通過年齡差異來表示兩個孩子的獨立性,也就是說即便兩個孩子同性,也有兩種可能。是以不要用雙胞胎擡杠了。

二、生日悖論

生日悖論是由這樣一個問題引出的:一個屋子裡需要有多少人,才能使得存在至少兩個人生日是同一天的機率達到 50%?

答案是 23 個人,也就是說房子裡如果有 23 個人,那麼就有 50% 的機率會存在兩個人生日相同。這個結論看起來不可思議,是以被稱為悖論。按照直覺,要得到 50% 的機率,起碼得有 183 個人吧,因為一年有 365 天呀?其實不是的,覺得這個結論不可思議主要有兩個思維誤區:

第一個誤區是誤解「存在」這個詞的含義。

讀者可能認為,如果 23 個人中出現相同生日的機率就能達到 50%,是不是意味着:

假設現在屋子裡坐着 22 個人,然後我走進去,那麼有 50% 的機率我可以找到一個人和我生日相同。但這怎麼可能呢?

并不是的,你這種想法是以自我為中心,而題目的機率是在描述整體。也就是說「存在」的含義是指 23 人中的任意兩個人,涉及排列組合,大機率和你沒啥關系。

如果你非要計算存在和自己生日相同的人的機率是多少,可以這樣計算:

1 - P(22 個人都和我的生日不同) = 1 -(364/365)^22 = 0.06

這樣計算得到的結果是不是看起來合理多了?生日悖論計算對象的不是某一個人,而是一個整體,其中包含了所有人的排列組合,它們的機率之和當然會大得多。

第二個誤區是認為機率是線性變化的。

讀者可能認為,如果 23 個人中出現相同生日的機率就能達到 50%,是不是意味着 46 個人的機率就能達到 100%?

不是的,就像中獎率 50% 的遊戲,你玩兩次的中獎率就是 100% 嗎?顯然不是,你玩兩次的中獎率是 75%:

P(兩次能中獎) = P(第一次就中了) + P(第一次沒中但第二次中了) = 1/2 + 1/2*1/2 = 75%

那麼換到生日悖論也是一個道理,機率不是簡單疊加,而要考慮一個連續的過程,是以這個結論并沒有什麼不合常理之處。

那為什麼隻要 23 個人出現相同生日的機率就能大于 50% 了呢?我們先計算 23 個人生日都唯一(不重複)的機率。隻有 1 個人的時候,生日唯一的機率是 

365/365

,2 個人時,生日唯一的機率是 

365/365 × 364/365

,以此類推可知 23 人的生日都唯一的機率:

幾個反直覺的機率問題

算出來大約是 0.493,是以存在相同生日的機率就是 0.507,差不多就是 50% 了。實際上,按照這個算法,當人數達到 70 時,存在兩個人生日相同的機率就上升到了 99.9%,基本可以認為是 100% 了。是以從機率上說,一個幾十人的小團體中存在生日相同的人真沒啥稀奇的。

三、三門問題

這個遊戲很經典了:遊戲參與者面對三扇門,其中兩扇門後面是山羊,一扇門後面是跑車。參與者隻要随便選一扇門,門後面的東西就歸他(跑車的價值當然更大)。但是主持人決定幫一下參與者:在他選擇之後,先不急着打開這扇門,而是由主持人打開剩下兩扇門中的一扇,展示其中的山羊(主持人知道每扇門後面是什麼),然後給參與者一次換門的機會,此時參與者應該換門還是不換門呢?

為了防止第一次看到這個問題的讀者迷惑,再具體描述一下這個問題:

你是遊戲參與者,現在有門 1,2,3,假設你随機選擇了門 1,然後主持人打開了門 3 告訴你那後面是山羊。現在,你是堅持你最初的選擇門 1,還是選擇換成門 2 呢?

幾個反直覺的機率問題

答案是應該換門,換門之後抽到跑車的機率是 2/3,不換的話是 1/3。又一次反直覺,感覺換不換的中獎機率應該都一樣啊,因為最後肯定就剩兩個門,一個是羊,一個是跑車,這是事實,是以不管選哪個的機率不都是 1/2 嗎?

類似前面說的男孩女孩問題,最簡單穩妥的方法就是把所有可能結果窮舉出來:

幾個反直覺的機率問題

很容易看到選擇換門中獎的機率是 2/3,不換的話是 1/3。

關于這個問題還有更簡單的方法:主持人開門實際上在「濃縮」機率。一開始你選擇到跑車的機率當然是 1/3,剩下兩個門中包含跑車的機率當然是 2/3,這沒啥可說的。但是主持人幫你排除了一個含有山羊的門,相當于把那 2/3 的機率濃縮到了剩下的這一扇門上。那麼,你說你是抱着原來那扇 1/3 的門,還是換成那扇經過「濃縮」的 2/3 機率的門呢?

再直覺一點,假設你三選一,剩下 2 扇門,再給你加入 98 扇裝山羊的門,把這 100 扇門随機打亂,問你換不換?肯定不換對吧,這明擺着把機率稀釋了,肯定抱着原來的那扇門是最可能中跑車的。再假設,初始有 100 扇門,你選了一扇,然後主持人在剩下 99 扇門中幫你排除 98 個山羊,問你換不換一扇門?肯定換對吧,你手上那扇門是 1%,另一扇門是 99%,或者也可以這樣了解,不換隻是選擇了 1 扇門,換門相當于選擇了 99 扇門,這樣結果很明顯了吧?

以上思想,也許有的讀者都思考過,下面我們思考這樣一個問題:假設你在決定是否換門的時候,小明破門而入,要求幫你做出選擇。他完全不知道之前發生的事,他隻知道面前有兩扇門,一扇是跑車一扇是山羊,那麼他抽中跑車的機率是多大?

當然是 1/2,這也是很多人做錯三門問題的根本原因。類似生日悖論,人們總是容易以自我為中心,通過這個小明的視角來計算是否換門,這顯然會進入誤區。

就好比有兩個箱子,一号箱子有 4 個黑球 2 個紅球,二号箱子有 2 個黑球 4 個紅球,随便選一個箱子,随便摸一個球,問你摸出紅球的機率。

對于不知情的小明,他會随機選擇一個箱子,随機摸球,摸到紅球的機率是:1/2 × 2/6 + 1/2 × 4/6 = 1/2

對于知情的你,你知道在二号箱子摸球機率大,是以隻在二号箱摸,摸到紅球的機率是:0 × 2/6 + 1 × 4/6 = 2/3

三門問題是有指導意義的。比如你蒙選擇題,先蒙了 A,後來靈機一動排除了 B 和 C,請問你是否要把 A 換成 D?答案是,換!

也許讀者會問,如果隻排除了一個答案,比如說 B,那麼我是否應該把 A 換成 C 或者 D 呢?答案是,換!

繼續閱讀