蒙提霍爾悖論(三門問題)終極分析(補充)附完整源碼

 

上一篇文章分析了經典的蒙提霍爾問題,最後的結論是更換選擇後有2/3的機會中獎。蒙提霍爾問題到此已經完結,但事實卻並不是如此。
 
在蒙提霍爾問題中,主持人事先知道汽車在哪一個門後面,而且他必定會選擇沒有汽車的那扇門。若是咱們稍稍改變一下前提,主持人事先也不知道汽車在哪一個門後面,他只是隨便打開2扇門中的一扇,而且剛好這扇門後面是山羊,那麼此時的狀況又是怎樣的呢?
 
若是你看了上一篇文章,你可能會不假思索地認爲二者是徹底同樣的,由於反正都是主持人幫咱們排除掉了一隻山羊嘛!
 
沒錯,在某一次特定的選擇中,這兩種狀況並無不一樣,但實際上兩種前提隱含的樣本數倒是不一樣的。
 
如今咱們假設這個節目在播出前錄製了一萬次。
 
第一種狀況,主持人事先知道山羊在哪扇門中,那麼若是不出意外的話,這一萬次錄製都可以順利完成,做爲導演,咱們只需從中選擇某一次便可。所以樣本數爲1萬。
 
但若是主持人事先並不知道山羊在哪一個門中的話,那麼一萬次錄製中將大約有3300次是失敗的,由於主持人有1/3的可能會選中汽車,而這與節目的要求是不符的。所以最終只有大約6700次錄製是有效的。也就是說,這種狀況下的樣本數變了,變爲了原來的2/3。
 
在上一篇文章中,咱們有一個重要的結論:當選擇了A門以後,A門的中獎概率將再也不改變。注意這一結論是相對於原樣本數的概率。也就是說咱們選擇A門的中獎概率是1/3是相對於1萬次錄製來講的。當咱們把主持人選到山羊的那大約6700次錄製單獨拿出來計算A門的中獎概率時,此時A門的新的中獎概率將變爲:
 
1/3 ÷ 2/3 = 1/2
 
仍然能夠用上一篇文章的方法來考慮這個問題,只是可能的狀況由3種變成了6種:
 
(1) 參賽者選擇山羊A,主持人選擇山羊B
(2) 參賽者選擇山羊A,主持人選擇汽車
(3) 參賽者選擇山羊B,主持人選擇山羊A
(4) 參賽者選擇山羊B,主持人選擇汽車
(5) 參賽者選擇汽車,主持人選擇山羊A
(6) 參賽者選擇汽車,主持人選擇山羊B
 
6種狀況的概率都是1/6,可是2和4兩種狀況是無效的,所以不管是否變動選擇,都各有一半的概率會中獎。
 
這其實是另外一種人爲干預的結果,咱們從結果中剔除那些不符合條件的部分從而讓事物的發展符合咱們的預期。這就像人類對物種的人工選擇行爲,遺傳的變異概率在人工的選擇過程當中被放大了,從而讓繁殖出的後代更加符合咱們的預期。
 
上代碼:
int totalTimes = 1000000;
int bingo = 0;
boolean[] boxes;
int actuallyTotalTimes = 0;
for (int i = 0; i < totalTimes; i++) { // loop 1 million times
     boxes = new boolean[] {false, false, false};
     boxes[random(3)] = true;

     int myChoice = random(3);
     int hostChoice = random(3, myChoice);
     if (boxes[hostChoice]) {
          continue;
     }

     actuallyTotalTimes++;
     if (!boxes[myChoice]) {
          bingo++;
     }
}
return (double ) bingo * 100 / actuallyTotalTimes;

 

主持人再也不是隻選擇山羊,而是在剩下的2扇門中隨機選擇。actuallyTotalTimes是有效的樣本數量,僅在主持人沒有選中汽車時纔會增長,所以有效的樣本數量僅爲總樣本數的2/3。dom

 

完整代碼下載(包括上一篇的2段代碼): http://pan.baidu.com/s/1i3niOvFoop

相關文章
相關標籤/搜索