這其實是乙個廣為人知的問題。假設有這麼個遊戲,主持人拿了三個盒子,其中有乙個有獎,另外兩個是空的。你有兩次選擇機會,在第一次選擇後,主持人沒有告訴你你選的盒子有沒有獎,而是開啟了另外兩個盒子中的乙個,並且告訴你這個盒子沒獎。現在輪到你選第二次,你是換盒子還是不換呢?
一般來說有兩種回答,第一種觀點認為,現在剩下的兩個盒子乙個有獎乙個沒獎,概率當然是 $ 1\over2 $ ,換不換都一樣。另一種結論則是,目前選擇的盒子有獎的概率為 $ 1\over 3 $ ,沒獎概率是 $ 2\over 3 $ ,當然是換嘛。
在高中學習過條件概率的 $ hmj $ 立刻覺得第二種觀點有問題!明明都已經告訴乙個盒子是空的了,這條件概率能一點不變?然而概統老師無情地告訴我們,第二種觀點是對的。於是 $ hmj $ 苦思冥想了半節概統課,最終直到晚課通核摸魚時才有點眉目。
既然高中貧乏的概率論知識不管用了,我們還是使用嚴謹的式子先來表示下問題。
我們給盒子編號為 1、2、3,並且假設我們選的是 1 號:
\[設事件\; a=中獎、b=1\,號盒子有獎、c=主持人告訴我們的新資訊\\
那麼在不換盒子時:\quad\begin
p(a|c)& =p((a\cdot b) |c)+p((a\cdot\bar b)|c)\\
& = p((a|b)|c)\cdot p(b|c)+p((a|\bar b)|c)\cdot p(\bar b|c)\\
& = 1\cdot p(b|c)+0\cdot p(\bar b|c)\\
& = p(b|c)
\end
\]\[換盒子時:\quad\begin
p(a|c)& =p((a\cdot b) |c)+p((a\cdot\bar b)|c)\\
& =p(\bar b|c)
\end
\]可以看到兩個值都取決於條件概率 $ p(b|c) $ 。而這個概率又和我們的 $ c $ 事件有關,我們就從不同的 $ c $ 的表述來討論一下。
從最直覺的方面來想,主持人告訴了我們乙個盒子為空,不妨假設為 2 號盒子,此時 \(c=2\,號盒子為空\),於是有:
\[p(b\cdot c)=\frac\;, p(c)=\frac\;\implies p(b|c)=\frac
\]於是乎,我們得到了得到結論一……沒辦法,我們只能認為這個假設 \(c\) 有點問題。怎麼設定新的事件 \(c\) 呢?在某乎查到的乙個觀點給了我一些頭緒,這個觀點認為,如果主持人隨機在另外兩個盒子中開了乙個,剛好是空的,那麼結論一就是正確的。而如果主持人知道哪個盒子是空的,只開啟這個,那麼就是結論二正確。
順著這個思路,我們考慮新的事件 $ c $ 。這回假設事件 $ c=主持人在,2、3,盒子裡隨機選取了乙個,剛好沒有獎 $ ,於是有:
\[設\,d=2\,號盒有獎\\
p(b\cdot c)=\frac\\
\begin
p(c) & =p(c\cdot d)+p(c\cdot \bar d\cdot\bar b)+p(c\cdot b)\\
& =p(c|d)\cdot p(d)+p(c|\bar d\cdot\bar b)\cdot p(\bar d\cdot\bar b)+\frac \\
& =\frac
\end\\
\therefore p(b|c)=\frac
\]果然,我們再次回到了結論一。
根據上面的討論,我們不妨大膽猜測,只有 \(p(c)=1\) 時才能達到結論二。而上述觀點的第二不妨剛好是這個情況。
在這種情況下,主持人知道哪個盒子是空的,也就是只開啟空盒子。對於 \(c\) 更加貼切的表述應該是「開啟了乙個空的盒子」,而不是「開啟的盒子是空的」。即 $ c=從剩下兩個盒子中開啟了乙個空盒子 $ ,此時 $ p(c)=1 $ ,因為剩下的兩個盒子至少有乙個沒獎!
至此,我們得到乙個可能的結論,將兩種不同的結論歸結於主持人的兩種行為方式。但是我們仍然很難感性理解這個結論,我們可以對這個結論提出明顯疑問:其一,為何主持人主觀的行為方式會影響這個遊戲;其二,作為遊戲的參與者,我們只知道有乙個盒子被開啟了,為何會有兩種結果。
對於第一點,我們要明白,概率永遠是基於現有資訊,而不是基於具體事物。主持人的行為方式恰恰不是乙個簡單的主觀事件,而是影響關鍵事件概率的要點。如果說我們不是參加這個遊戲的人,只是路過看到兩個盒子中的乙個有獎,那麼概率當然是 \(1\over 2\) 。第二點則是這個問題違反直覺的原因,從參與者來看,我們很容易忽略主持人是知道盒子資訊的,從而漏掉了乙個條件。殊不知加上這個條件後,」有乙個盒子被開啟「完全變成了另乙個事件。
終於,我們有了乙個直覺和理論上都能滿足需求的結論。最後不妨再用實驗驗證一下。
點選開啟摺疊的**
#include #include #include int pow(int x, int p)
return ret;
}//重複試驗1000000次
int t = 1000000;
//使用二進位制表示是否有獎,如cha=1代表最初選擇1號盒子
int state, cha = 1, chb;
//ans1/ans2表示獎在我們第一次選中的盒子的次數
//其中 ans1是主持人只選空盒,ans2隨機選
//oth表示主持人隨機選乙個盒子,選中有獎的盒子的次數,
//用以調整隨機選取情況的基數
int ans1, ans2, oth;
int main(int argc, char* ar**)
printf("%lf %lf", 1.0 * ans1 / 1000000, 1.0 * ans2 / (1000000 - oth));
0.500310
return 0;
}
(我覺得這種話裡有話的題目……屬實害人)
蒙提霍爾問題
蒙提霍爾問題 蒙提霍爾問題,亦稱為蒙特霍問題或三門問題 英文 monty hall problem 是乙個源自博弈論的數學遊戲問題,大致出自美國的電視遊戲節目 let s make a deal。問題的名字來自該節目的主持人蒙提 霍爾 monty hall 這個遊戲的玩法是 參賽者會看見三扇關閉了的...
蒙提霍爾問題
問題 參賽者會看見三扇關閉了的門,其中一扇的後面有一輛汽車,選中後面有車的那扇門就可以贏得該汽車,而另外兩扇門後面則各藏有乙隻山羊。當參賽者選定了一扇門,但未去開啟它的時候,節目主持人會開啟剩下兩扇門的其中一扇,露出其中乙隻山羊。主持人其後會問參賽者要不要換另一扇仍然關上的門。問題是 換另一扇門會否...
蒙提霍爾問題 三扇門
題目介紹 參賽者會看見三扇關閉了的門,其中一扇的後面有一輛汽車,選中後面有車的那扇門可贏得該汽車,另外兩扇門後面則各藏有乙隻山羊。當參賽者選定了一扇門,但未去開啟它的時候,節目主持人開啟剩下兩扇門的其中一扇,露出其中乙隻山羊。主持人其後會問參賽者要不要換另一扇仍然關上的門。問題是 換另一扇門會否增加...