今天看到一個問題——三門問題,感覺挺有趣的,自己也親自上手利用matlab仿真模擬了一下,分享給大家。
【三門問題】
三門問題出自美國的電視遊戲節目Let's Make a Deal,因為是由一個叫蒙提霍爾的人提出的,所以也叫蒙提霍爾問題。
主要內容
參賽者會看見三扇關閉了的門,其中一扇的後面有一輛汽車,選中後面有車的那扇門可贏得該汽車,另外兩扇門後面是空的。當參賽者選定了一扇門,但未去開啟它的時候,節目主持人開啟剩下兩扇門的其中一扇,露出後面是空的。主持人其後會問參賽者要不要換另一扇仍然關上的門。
你會選擇換嗎?
大部分人會選擇不換,因為覺得兩扇門的中獎概率是一樣的,都是50%。那麼,恭喜你,答錯了。其實換門可以提高中獎的概率。
不換門的話,贏得汽車的機率是1/3;而換門的話,贏得汽車的機率是2/3。具體的解釋大家可以參考程式設計師小灰寫的《漫畫:反直覺的「三門問題」》和《著名的三門問題,是在胡扯嗎?》,我感覺寫得挺通俗易懂的。
【三門問題matlab仿真驗證】
通過matlab編程,每次模擬10000次,共模擬9次,代碼放在文末。
通過上表仿真模擬的結果可以看出,結果確實是不換門的話,贏得汽車的機率是1/3;而換門的話,贏得汽車的機率是2/3。
從三門問題可以看出,我們的直覺和實際的客觀概率常常是不相符的,這種現象叫做概率偏見
【matlab代碼】
%%三門問題
ChangeWinCount = 0;%換門的獲獎總次數
UnChangeWinCount = 0;%不換門的獲獎總次數
for i = 1:1:10000
Doors = [1,2,3];
BonusDoor = randi(3,1);%有獎的那扇門
SelectedDoor = randi(3,1);%自己選擇的那扇門
% 主持人打開一扇空門
for j = 1:1:3
if j ~= SelectedDoor && j ~= BonusDoor
Doors(Doors==j) = [];
break
end
end
%獲得換門的序號
ChangedDoor = Doors(1);
if ChangedDoor == SelectedDoor
ChangedDoor = Doors(2);
if SelectedDoor == BonusDoor
UnChangeWinCount = UnChangeWinCount + 1;
elseif ChangedDoor == BonusDoor
ChangeWinCount = ChangeWinCount + 1;
end
end
UnChangeWinCount
ChangeWinCount