作者 | 程式設計師浩哥
責編 | 屠敏
三門問題(Monty Hall problem)亦稱為蒙提霍爾問題、蒙特霍問題或蒙提霍爾悖論,出自美國的電視遊戲節目Let's Make a Deal。今天為大家進行完整分析。
話不多說,直接看題目。
三門問題
三門問題:參賽者的面前有三扇關閉著的門,其中一扇的後面是天使,選中後天使會達成你的一個願望,而另外兩扇門後面則是惡魔,選中就會死亡。
當你選定了一扇門,但未去開啟它的時候,上帝會開啟剩下兩扇門中的一扇,露出其中一隻惡魔。(上帝是全能的,必會打開惡魔門)隨後上帝會問你要不要更換選擇,選另一扇仍然關著的門。
普通人的直覺
按照常理,參賽者在做出最開始的決定時,對三扇門後面的事情一無所知,因此他選擇正確的概率是1/3,這個應該大家都可以想到。
接下來,主持人排除掉了一個錯誤答案(有惡魔的門),於是剩下的兩扇門必然是一扇是天使,一扇是惡魔,那麼此時無論選擇哪一扇門,勝率都是1/2,依然合乎直覺。
所以你作為參賽者,你會認為換不換都無必要,獲勝概率均為1/2。但是,真的是這樣嗎?
題目分析
正確的答案是,如果你選擇了換,碰見天使的概率會高達2/3,而不換的話,碰見天使的概率只有1/3。怎麼來的?
我們用一個很通俗的方法,能讓你一聽就懂。首先剛開始選擇的一扇門的概率為1/3,而另外兩扇門的總概率為2/3。
現在上帝打開了其中一扇為惡魔的門,我們知道這個門後面不會再有天使,所以相當於這部分概率被第三個門持有。
剩下的那扇門的概率(2/3)相當於剛開始選擇的門(1/3)的二倍。所以我們得換。
如果還沒有聽懂。我們可以假設有一百扇門,裡邊有99隻都是惡魔。現在你隨機選擇一扇門,選擇到天使的概率是1/100。
這時,上帝打開其中的98扇,裡邊都是惡魔。這時候就相當於99/100的概率都集中在了另一扇門裡。自然,我們需要選擇換。
貝葉斯證明代碼證明
為了驗證結果,我用代碼跑了一百萬次。什麼?用貝葉斯分析分析!太俗,咱們還是直接上代碼。
1funcmain() { 2//換門遇見天使的次數和不換門遇見天使的次數 3 changeAngelCount, unchangeAngelCount := 0, 0 4for i := 0; i < 1000000; i++ { 5//門的總數 6 doors := []int{0, 1, 2} 7//天使門和選中的門 8 angelDoor, selectedDoor := rand.Intn(3), rand.Intn(3) 9//上帝移除一扇惡魔門10for j := 0; j < len(doors); j++ {11if doors[j] != selectedDoor && doors[j] != angelDoor {12 doors = append(doors[:j], doors[j+1:]...)13break14 }15 }16//統計17if selectedDoor == angelDoor {18 unchangeAngelCount++19 } else {20 changeAngelCount++21 }22 }23 fmt.Println("不換門遇見天使次數:", unchangeAngelCount, "比例:", (float32(unchangeAngelCount) / 1000000))24 fmt.Println("換門遇見天使次數:", changeAngelCount, "比例:", (float32(changeAngelCount) / 1000000))25}
跑了一百萬次,結果當然不讓我們失望!
所以,今天的問題你聽明白了嗎?評論區留下你的想法吧!
【End】
在全民抗疫的特殊時期下,在人員複雜、流動量大地方的出入口處都設置了無接觸式無感紅外人體測溫系統。
在這次疫情防控中,無感人體測溫系統發揮了怎樣的作用?高精準的無感人體測溫系統的核心技術武器是什麼?對於開發者們來說,大家應該了解哪些技術?
今晚8點《多場景疫情防控:解讀雲邊端聯動下的全棧 AI 技術應用》