-----------
上篇文章 洗牌算法詳解 講到了驗(yàn)證概率算法的蒙特卡羅方法也切,今天聊點(diǎn)輕松的內(nèi)容:幾個(gè)和概率相關(guān)的有趣問(wèn)題道批。
計(jì)算概率有下面兩個(gè)最簡(jiǎn)單的原則:
原則一埂伦、計(jì)算概率一定要有一個(gè)參照系,稱(chēng)作「樣本空間」勺届,即隨機(jī)事件可能出現(xiàn)的所有結(jié)果。事件 A 發(fā)生的概率 = A 包含的樣本點(diǎn) / 樣本空間的樣本總數(shù)。
原則二忍级、計(jì)算概率一定要明白,概率是一個(gè)連續(xù)的整體伪朽,不可以把連續(xù)的概率分割開(kāi)轴咱,也就是所謂的條件概率。
上述兩個(gè)原則高中就學(xué)過(guò)烈涮,但是我們還是很容易犯錯(cuò)朴肺,而且犯錯(cuò)的流程也有異曲同工之妙:
先是忽略了原則二,錯(cuò)誤地計(jì)算了樣本空間坚洽,然后通過(guò)原則一算出了錯(cuò)誤的答案戈稿。
下面介紹幾個(gè)簡(jiǎn)單卻具有迷惑性的問(wèn)題,分別是男孩女孩問(wèn)題讶舰、生日悖論鞍盗、三門(mén)問(wèn)題需了。當(dāng)然,三門(mén)問(wèn)題可能是大家最耳熟的橡疼,所以就多說(shuō)一些有趣的思考援所。
PS:我認(rèn)真寫(xiě)了 100 多篇原創(chuàng),手把手刷 200 道力扣題目欣除,全部發(fā)布在 labuladong的算法小抄住拭,持續(xù)更新。建議收藏历帚,按照我的文章順序刷題滔岳,掌握各種算法套路后投再入題海就如魚(yú)得水了。
一挽牢、男孩女孩問(wèn)題
假設(shè)有一個(gè)家庭谱煤,有兩個(gè)孩子,現(xiàn)在告訴你其中有一個(gè)男孩禽拔,請(qǐng)問(wèn)另一個(gè)也是男孩的概率是多少刘离?
很多人,包括我在內(nèi)睹栖,不假思索地回答:1/2 啊硫惕,因?yàn)榱硪粋€(gè)孩子要么是男孩,要么是女孩野来,而且概率相等呀恼除。但是實(shí)際上,答案是 1/3曼氛。
上述思想為什么錯(cuò)誤呢豁辉?因?yàn)闆](méi)有正確計(jì)算樣本空間,導(dǎo)致原則一計(jì)算錯(cuò)誤舀患。有兩個(gè)孩子徽级,那么樣本空間為 4,即哥哥妹妹聊浅,哥哥弟弟灰追,姐姐妹妹,姐姐弟弟這四種情況狗超。已知有一個(gè)男孩弹澎,那么排除姐姐妹妹這種情況,所以樣本空間變成 3努咐。另一個(gè)孩子也是男孩只有哥哥弟弟這 1 種情況苦蒿,所以概率為 1/3。
為什么計(jì)算樣本空間會(huì)出錯(cuò)呢渗稍?因?yàn)槲覀兒雎粤藯l件概率佩迟,即混淆了下面兩個(gè)問(wèn)題:
這個(gè)家庭只有一個(gè)孩子团滥,這個(gè)孩子是男孩的概率是多少?
這個(gè)家庭有兩個(gè)孩子报强,其中一個(gè)是男孩灸姊,另一個(gè)孩子是男孩的概率是多少?
根據(jù)原則二秉溉,概率問(wèn)題是連續(xù)的力惯,不可以把上述兩個(gè)問(wèn)題混淆。第二個(gè)問(wèn)題需要用條件概率召嘶,即求一個(gè)孩子是男孩的條件下父晶,另一個(gè)也是男孩的概率。運(yùn)用條件概率的公式也很好算弄跌,就不多說(shuō)了甲喝。
通過(guò)這個(gè)問(wèn)題,讀者應(yīng)該理解兩個(gè)概率計(jì)算原則的關(guān)系了铛只,最具有迷惑性的就是條件概率的忽視埠胖。為了不要被迷惑,最簡(jiǎn)單的辦法就是把所有可能結(jié)果窮舉出來(lái)淳玩。
最后直撤,對(duì)于此問(wèn)題我見(jiàn)過(guò)一個(gè)很奇葩的質(zhì)疑:如果這兩個(gè)孩子是雙胞胎,不存在年齡上的差異怎么辦凯肋?
我竟然覺(jué)得有那么一絲道理症虑!但其實(shí)觉义,我們只是通過(guò)年齡差異來(lái)表示兩個(gè)孩子的獨(dú)立性论悴,也就是說(shuō)即便兩個(gè)孩子同性坟瓢,也有兩種可能授瘦。所以不要用雙胞胎抬杠了熬甚。
二喉酌、生日悖論
生日悖論是由這樣一個(gè)問(wèn)題引出的:一個(gè)屋子里需要有多少人完箩,才能使得存在至少兩個(gè)人生日是同一天的概率達(dá)到 50%铁蹈?
答案是 23 個(gè)人宽闲,也就是說(shuō)房子里如果有 23 個(gè)人,那么就有 50% 的概率會(huì)存在兩個(gè)人生日相同握牧。這個(gè)結(jié)論看起來(lái)不可思議容诬,所以被稱(chēng)為悖論。按照直覺(jué)沿腰,要得到 50% 的概率览徒,起碼得有 183 個(gè)人吧,因?yàn)橐荒暧?365 天呀颂龙?其實(shí)不是的习蓬,覺(jué)得這個(gè)結(jié)論不可思議主要有兩個(gè)思維誤區(qū):
第一個(gè)誤區(qū)是誤解「存在」這個(gè)詞的含義纽什。
讀者可能認(rèn)為,如果 23 個(gè)人中出現(xiàn)相同生日的概率就能達(dá)到 50%躲叼,是不是意味著:
假設(shè)現(xiàn)在屋子里坐著 22 個(gè)人芦缰,然后我走進(jìn)去,那么有 50% 的概率我可以找到一個(gè)人和我生日相同枫慷。但這怎么可能呢让蕾?
并不是的,你這種想法是以自我為中心流礁,而題目的概率是在描述整體涕俗。也就是說(shuō)「存在」的含義是指 23 人中的任意兩個(gè)人,涉及排列組合神帅,大概率和你沒(méi)啥關(guān)系再姑。
如果你非要計(jì)算存在和自己生日相同的人的概率是多少,可以這樣計(jì)算:
1 - P(22 個(gè)人都和我的生日不同) = 1 -(364/365)^22 = 0.06
這樣計(jì)算得到的結(jié)果是不是看起來(lái)合理多了找御?生日悖論計(jì)算對(duì)象的不是某一個(gè)人元镀,而是一個(gè)整體,其中包含了所有人的排列組合霎桅,它們的概率之和當(dāng)然會(huì)大得多栖疑。
PS:我認(rèn)真寫(xiě)了 100 多篇原創(chuàng),手把手刷 200 道力扣題目滔驶,全部發(fā)布在 labuladong的算法小抄遇革,持續(xù)更新。建議收藏揭糕,按照我的文章順序刷題萝快,掌握各種算法套路后投再入題海就如魚(yú)得水了。
第二個(gè)誤區(qū)是認(rèn)為概率是線性變化的著角。
讀者可能認(rèn)為揪漩,如果 23 個(gè)人中出現(xiàn)相同生日的概率就能達(dá)到 50%,是不是意味著 46 個(gè)人的概率就能達(dá)到 100%吏口?
不是的奄容,就像中獎(jiǎng)率 50% 的游戲,你玩兩次的中獎(jiǎng)率就是 100% 嗎产徊?顯然不是昂勒,你玩兩次的中獎(jiǎng)率是 75%:
P(兩次能中獎(jiǎng)) = P(第一次就中了) + P(第一次沒(méi)中但第二次中了) = 1/2 + 1/2*1/2 = 75%
那么換到生日悖論也是一個(gè)道理,概率不是簡(jiǎn)單疊加舟铜,而要考慮一個(gè)連續(xù)的過(guò)程叁怪,所以這個(gè)結(jié)論并沒(méi)有什么不合常理之處。
那為什么只要 23 個(gè)人出現(xiàn)相同生日的概率就能大于 50% 了呢深滚?我們先計(jì)算 23 個(gè)人生日都唯一(不重復(fù))的概率奕谭。只有 1 個(gè)人的時(shí)候涣觉,生日唯一的概率是 365/365
,2 個(gè)人時(shí)血柳,生日唯一的概率是 365/365 × 364/365
官册,以此類(lèi)推可知 23 人的生日都唯一的概率:
算出來(lái)大約是 0.493,所以存在相同生日的概率就是 0.507难捌,差不多就是 50% 了膝宁。實(shí)際上,按照這個(gè)算法根吁,當(dāng)人數(shù)達(dá)到 70 時(shí)员淫,存在兩個(gè)人生日相同的概率就上升到了 99.9%,基本可以認(rèn)為是 100% 了击敌。所以從概率上說(shuō)介返,一個(gè)幾十人的小團(tuán)體中存在生日相同的人真沒(méi)啥稀奇的。
三沃斤、三門(mén)問(wèn)題
這個(gè)游戲很經(jīng)典了:游戲參與者面對(duì)三扇門(mén)圣蝎,其中兩扇門(mén)后面是山羊,一扇門(mén)后面是跑車(chē)衡瓶。參與者只要隨便選一扇門(mén)徘公,門(mén)后面的東西就歸他(跑車(chē)的價(jià)值當(dāng)然更大)。但是主持人決定幫一下參與者:在他選擇之后哮针,先不急著打開(kāi)這扇門(mén)关面,而是由主持人打開(kāi)剩下兩扇門(mén)中的一扇,展示其中的山羊(主持人知道每扇門(mén)后面是什么)十厢,然后給參與者一次換門(mén)的機(jī)會(huì)等太,此時(shí)參與者應(yīng)該換門(mén)還是不換門(mén)呢?
為了防止第一次看到這個(gè)問(wèn)題的讀者迷惑寿烟,再具體描述一下這個(gè)問(wèn)題:
你是游戲參與者澈驼,現(xiàn)在有門(mén) 1,2,3辛燥,假設(shè)你隨機(jī)選擇了門(mén) 1筛武,然后主持人打開(kāi)了門(mén) 3 告訴你那后面是山羊。現(xiàn)在挎塌,你是堅(jiān)持你最初的選擇門(mén) 1徘六,還是選擇換成門(mén) 2 呢?
答案是應(yīng)該換門(mén)榴都,換門(mén)之后抽到跑車(chē)的概率是 2/3待锈,不換的話(huà)是 1/3。又一次反直覺(jué)嘴高,感覺(jué)換不換的中獎(jiǎng)概率應(yīng)該都一樣啊竿音,因?yàn)樽詈罂隙ň褪蓚€(gè)門(mén)和屎,一個(gè)是羊,一個(gè)是跑車(chē)春瞬,這是事實(shí)柴信,所以不管選哪個(gè)的概率不都是 1/2 嗎?
類(lèi)似前面說(shuō)的男孩女孩問(wèn)題宽气,最簡(jiǎn)單穩(wěn)妥的方法就是把所有可能結(jié)果窮舉出來(lái):
很容易看到選擇換門(mén)中獎(jiǎng)的概率是 2/3随常,不換的話(huà)是 1/3。
關(guān)于這個(gè)問(wèn)題還有更簡(jiǎn)單的方法:主持人開(kāi)門(mén)實(shí)際上在「濃縮」概率萄涯。一開(kāi)始你選擇到跑車(chē)的概率當(dāng)然是 1/3绪氛,剩下兩個(gè)門(mén)中包含跑車(chē)的概率當(dāng)然是 2/3,這沒(méi)啥可說(shuō)的涝影。但是主持人幫你排除了一個(gè)含有山羊的門(mén)枣察,相當(dāng)于把那 2/3 的概率濃縮到了剩下的這一扇門(mén)上。那么袄琳,你說(shuō)你是抱著原來(lái)那扇 1/3 的門(mén)询件,還是換成那扇經(jīng)過(guò)「濃縮」的 2/3 概率的門(mén)呢?
再直觀一點(diǎn)唆樊,假設(shè)你三選一宛琅,剩下 2 扇門(mén),再給你加入 98 扇裝山羊的門(mén)逗旁,把這 100 扇門(mén)隨機(jī)打亂嘿辟,問(wèn)你換不換?肯定不換對(duì)吧片效,這明擺著把概率稀釋了红伦,肯定抱著原來(lái)的那扇門(mén)是最可能中跑車(chē)的。再假設(shè)淀衣,初始有 100 扇門(mén)昙读,你選了一扇,然后主持人在剩下 99 扇門(mén)中幫你排除 98 個(gè)山羊膨桥,問(wèn)你換不換一扇門(mén)蛮浑?肯定換對(duì)吧,你手上那扇門(mén)是 1%只嚣,另一扇門(mén)是 99%沮稚,或者也可以這樣理解,不換只是選擇了 1 扇門(mén)册舞,換門(mén)相當(dāng)于選擇了 99 扇門(mén)蕴掏,這樣結(jié)果很明顯了吧?
以上思想,也許有的讀者都思考過(guò)盛杰,下面我們思考這樣一個(gè)問(wèn)題:假設(shè)你在決定是否換門(mén)的時(shí)候挽荡,小明破門(mén)而入,要求幫你做出選擇即供。他完全不知道之前發(fā)生的事徐伐,他只知道面前有兩扇門(mén),一扇是跑車(chē)一扇是山羊募狂,那么他抽中跑車(chē)的概率是多大办素?
當(dāng)然是 1/2,這也是很多人做錯(cuò)三門(mén)問(wèn)題的根本原因祸穷。類(lèi)似生日悖論性穿,人們總是容易以自我為中心,通過(guò)這個(gè)小明的視角來(lái)計(jì)算是否換門(mén)雷滚,這顯然會(huì)進(jìn)入誤區(qū)需曾。
就好比有兩個(gè)箱子,一號(hào)箱子有 4 個(gè)黑球 2 個(gè)紅球祈远,二號(hào)箱子有 2 個(gè)黑球 4 個(gè)紅球呆万,隨便選一個(gè)箱子,隨便摸一個(gè)球车份,問(wèn)你摸出紅球的概率谋减。
對(duì)于不知情的小明,他會(huì)隨機(jī)選擇一個(gè)箱子扫沼,隨機(jī)摸球出爹,摸到紅球的概率是:1/2 × 2/6 + 1/2 × 4/6 = 1/2
對(duì)于知情的你,你知道在二號(hào)箱子摸球概率大缎除,所以只在二號(hào)箱摸严就,摸到紅球的概率是:0 × 2/6 + 1 × 4/6 = 2/3
三門(mén)問(wèn)題是有指導(dǎo)意義的。比如你蒙選擇題器罐,先蒙了 A梢为,后來(lái)靈機(jī)一動(dòng)排除了 B 和 C,請(qǐng)問(wèn)你是否要把 A 換成 D轰坊?答案是铸董,換!
也許讀者會(huì)問(wèn)衰倦,如果只排除了一個(gè)答案袒炉,比如說(shuō) B旁理,那么我是否應(yīng)該把 A 換成 C 或者 D 呢樊零?答案是,換!
因?yàn)榘凑談偛拧笣饪s」概率這個(gè)思想驻襟,只要進(jìn)行了排除夺艰,都是在進(jìn)行「濃縮」,均攤下來(lái)肯定比你一開(kāi)始蒙的那個(gè)答案概率 1/4 高沉衣。比如剛才的例子郁副,C 和 D 的正確概率都是 3/8,而你開(kāi)始蒙的 A 只有 1/4豌习。
當(dāng)然存谎,運(yùn)用此策略蒙題的前提是你真的抓瞎,真的隨機(jī)亂選答案肥隆,這樣概率才能作為最后的殺手锏既荚。
_____________
我的 在線電子書(shū) 有 100 篇原創(chuàng)文章,手把手帶刷 200 道力扣題目栋艳,建議收藏恰聘!對(duì)應(yīng)的 GitHub 算法倉(cāng)庫(kù) 已經(jīng)獲得了 70k star,歡迎標(biāo)星吸占!