利用Python分析羊車門問題
題目描述:有3扇關閉的門,一扇門後面停著汽車,其餘門後是山羊,只有主持人知道每扇門後面是什麼。參賽者可以選擇一扇門,在開啟它之前,主持人會開啟另外一扇門,露出門後的山羊,然後允許參賽者更換自己的選擇。
1、按照你的第一感覺回答,你覺得不換選擇能有更高的機率獲得汽車,還是換選擇能有更高的機率獲得汽車?或機率沒有發生變化?
答:換機率更高,在電影《決勝21點》中看過這個問題。
2、請自己認真分析一下“不換選擇能有更高的機率獲得汽車,還是換選擇能有更高的機率獲得汽車?或機率沒有發生變化?” 寫出你分析的思路和結果。
答:可以把這題當作一個概率問題,分析如下:
設三門後面分別為車,A羊,B羊。則第一次選門的時候,可以分為以下三種等概情況:
情況1:車 1/3
情況2:A羊 1/3
情況3:B羊 1/3
接下來,若不更換所選門:
情況1:得車
情況2:不得
情況3:不得
若更換所選門:
情況1:不得
情況2:得
情況3:得
顯然,換的情況概率為2/3,高於不換的1/3。故換選擇有更高的機率。
此外,還可以用一種我自認為容易理解的解釋來說明我的答案:
在主持人開啟羊門之後,剩下的門無非一扇車門,一扇羊門。若我們換門,那麼必然會改變先前的結果。(車門變羊門,羊門變車門)。
於是可以認為,
先前選到車門的概率==更換後選到羊門的概率;
同理,
先前選到羊門的概率==更換後選到車門的概率;
也就是說,更換後選到車門的概率是2/3。而先前選到車門不換的概率是1/3。還是換選擇概率更高。
注:和同學討論過後,這裡提一下我認為為什麼答案不是1/2。
如果換與不換得車概率均為
我認為關鍵的是:若你不更換門的話,主持人開門這一事件並不影響你選到的是車門的概率。
3. 請設法編寫程式驗證自己的想法,驗證的結果支援了你的分析結果,還是沒有支援你的分析結果,請寫出程式執行結果,以及其是否支援你的分析。
答:基於上述分析,我認為其實根本不必模擬追蹤門的過程。
方法如下:1).聲名兩個變數,man和car,分別代表你的初次選擇和車門的位置。
再聲名兩個變數,換門獲勝數與不換門獲勝數,用於記錄結果。
2).利用random庫中的randint產生1~3範圍內的隨機數,對兩個變數分別賦值。
3).若賦值後,car==man,則說明一開始選擇的便是車門,
此時,不換的獲勝數+1;
否則,意味著一開始選擇的是羊門,則換的獲勝數+1。
4).將上述過程重複足夠大的基數,計算概率,驗證結論。
實驗結果如下:分別將過程重複1000遍,10000遍,十萬遍,一百萬遍。
重複基數越大,不換與換獲勝的機率分別越接近於1/3與2/3。驗證了之前的猜想。
4、請附上你的程式碼。
程式碼如下:
import random as r #總次數 total=1000000 #1000,1W,10W,100W #換與不換的獲勝次數 win1=0 win2=0 for i in range(total): #模擬選擇過程 man=r.randint(1,3) car=r.randint(1,3) #結果:一開始為車門,不換+1. # 否則則一開始為羊門,換+1. if man==car: win1+=1 else: win2+=1 print("在{}次實驗中:".format(total)) print("若不更改門,獲勝概率為{:.3}%.".format((win1/total)*100)) print("若更改門,獲勝概率為{:.3}%.".format((win2/total)*100))