用贝叶斯定理解决三门问题并用Python进行模拟(Bayes' Rule Monty Hall Problem Simulation Python)...
三門問題(Monty Hall problem)也稱為蒙提霍爾問題或蒙提霍爾悖論,出自美國的電視游戲節目《Let’s Make a Deal》。問題名字來自該節目的主持人蒙提·霍爾(Monty Hall)。
?
這個游戲的玩法是:參賽者會看見三扇關閉的門,其中一扇門后面有一輛汽車,選中后面有車的那扇門就可以贏得該汽車,而另外兩扇門后面則各藏有一只山羊。當參賽者選定了一扇門,但未去開啟它的時候,節目主持人會開啟剩下兩扇門中的一扇,露出其中一只山羊。主持人其后會問參賽者要不要更換其初始的選擇,選另一扇仍然關上的門。
?
那么問題來了,參賽者到底要不要更換其初始的選擇呢?
?
解決這個問題需要用到貝葉斯定理:
?
讓我們選一個特定的例子來看看:假設三扇門分別為Door A,Door? B,Door C,并且參賽者初始選定了Door A,然后主持人展示了Door? B。那么參賽者是堅持選擇Door A還是更換成Door C呢?這就要根據Door A和Door C哪個門后汽車出現的概率較大決定了。
?
也就是說,我們需要解決P(Door A=car|Door A is selected,?Door? B is revealed)和P(Door C=car|Door A is selected,?Door? B is revealed)哪個大的問題。
?
首先,每個門后有車的概率都是1/3:
?
其次,如果Door A門后有汽車,那么Door A被選擇的幾率是1/3,假設初始選擇了Door?A,那么Door B被主持人打開的幾率是1/2:
?
再次,普通情況下,Door A被選擇的幾率是1/3,Door B被主持人打開的幾率是1/2(因為已經有一扇門被選擇了,選擇的門不能被打開):
?
同理,如果Door C門后有汽車,那么Door A被選擇的幾率是1/3,假設初始選擇了Door?A,那么Door B被主持人打開的幾率是1:
?
因此,我們可以看到,P(Door C=car|Door A is selected,?Door? B is revealed)是P(Door A=car|Door A is selected,?Door? B is revealed)的兩倍。也就是說,更換初始的選擇將會使我們的獲勝幾率提高2倍!
?
可以用probability?tree來幫助理解一下:
如果對上面的計算公式還有疑問,那么讓我們用計算機來模擬一下:
from random import randint from random import choiceN = 1000def simulate(N):m=0 #設置不更換初始選擇贏得汽車的次數n=0 #設置更換初始選擇贏得汽車的次數for i in range(N): #模擬1000次游戲win=randint(1,3) #設置藏有汽車的門,在1-3之間隨機選出bet1=randint(1,3) #設置初始選擇的門,在1-3之間隨機選出remain=[i for i in range(1,4) if i!=win and i!=bet1] #剩余可選的門(除去初始選擇的門和藏有汽車的門)monty_reveal=choice(remain) #monty會在剩余可選的門中選擇一扇門打開bet2=6-bet1-monty_reveal #bet2表示更換初始選擇(用6減是因為三扇門加起來等于6)if bet1==win: #如果初始選擇和藏有汽車的門吻合,那么初始選擇的獲勝次數+1m+=1if bet2==win: ##如果更換初始選擇的bet2和藏有汽車的門吻合,那么bet2的獲勝次數+1n+=1return n/mprint(simulate(N)) 2.0211480362537766?
最后的結果: 更換初始選擇獲勝的次數差不多是不更換初始選擇獲勝次數的兩倍。
?
三門問題是有些反直覺的,我們可以這樣來理解:當參賽者選擇Door A時,他的獲勝概率是1/3,當主持人展示了Door?B門后沒有汽車以后,這個信息并沒有給參賽者的初始選擇帶來任何有用的信息 ,選擇Door?A獲勝的概率仍然是1/3,但是鑒于選擇Door?B獲勝的概率降為了0,因此選擇Door?C獲勝的概率變為1-1/3,也就是2/3。
?
參考:https://classroom.udacity.com/courses/st101/lessons/48744119/concepts/484806120923
?
轉載于:https://www.cnblogs.com/HuZihu/p/9056224.html
總結
以上是生活随笔為你收集整理的用贝叶斯定理解决三门问题并用Python进行模拟(Bayes' Rule Monty Hall Problem Simulation Python)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU 3555 Bomb
- 下一篇: Django之ORM使用以及模板语言