三門問題(monty hall problem)亦稱為蒙提霍爾問題、蒙特霍問題或蒙提霍爾悖論,
大致出自美國的電視遊戲節目let's make a deal。
問題名字來自該節目的主持人蒙提·霍爾(monty hall)。參賽者會看見三扇關閉了的門,
其中一扇的後面有一輛汽車,選中後面有車的那扇門可贏得該汽車,另外兩扇門後面則各藏有乙隻山羊。
當參賽者選定了一扇門,但未去開啟它的時候,節目主持人開啟剩下兩扇門的其中一扇,露出其中乙隻山羊。
主持人其後會問參賽者要不要換另一扇仍然關上的門。
問題是:換另一扇門會否增加參賽者贏得汽車的機率?
如果嚴格按照上述的條件,即主持人清楚地知道,自己開啟的那扇門後是羊,那麼答案是會。
不換門的話,贏得汽車的機率是1/3。換門的話,贏得汽車的機率是2/3。
import random
def montyhadll(dselect,dchange):
dcar=random.randint(1,3)
if dcar==dselect and dchange==0: #一開始選中但是改變改變了選擇
return 1
elif dcar!=dselect and dchange==0: #一開始沒選中但是沒改變選擇
return 0
elif dcar==dselect and dchange==1:# 一開始選擇但是改變選擇
return 0
else:
return 1 #一開始沒選中但是改變選擇
測試一千次看看概率:
#不確定是否改變選擇
n=1000;
win=0;
for i in range(n):
dselect=random.randint(1,3)
dchange=random.randint(0,1)
win=win+montyhadll(dselect,dchange)
print(float(win)/float(n))
#確定不改變選擇
n=1000;
win=0;
for i in range(n):
dselect=random.randint(1,3)
dchange=0
win=win+montyhadll(dselect,dchange)
print(float(win)/float(n))
#確定改變選擇
n=1000;
win=0;
for i in range(n):
dselect=random.randint(1,3)
dchange=1
win=win+montyhadll(dselect,dchange)
print(float(win)/float(n))
還是換吧 ,概率大一些,大哥們你們覺得了?
0.483
0.492
0.533
0.325
0.31
0.347
0.681
0.669
0.651
三門問題(蒙提霍爾悖論)
蒙提霍爾問題,又稱三門悖論,出自美國的一檔電視節目,問題的描述是這樣的 選手甲面前有三扇門,其中一扇門之後是汽車,其餘兩扇後面是山羊。選手可以選擇三扇門中的任意乙個並且開啟後獲得該扇門後面的東西。當選手選擇了一扇門,但尚未去開啟它的時候,主持人 事先知道每個門之後藏的東西 會在剩下的兩扇門中開啟一扇...
蒙提霍爾問題 三扇門
題目介紹 參賽者會看見三扇關閉了的門,其中一扇的後面有一輛汽車,選中後面有車的那扇門可贏得該汽車,另外兩扇門後面則各藏有乙隻山羊。當參賽者選定了一扇門,但未去開啟它的時候,節目主持人開啟剩下兩扇門的其中一扇,露出其中乙隻山羊。主持人其後會問參賽者要不要換另一扇仍然關上的門。問題是 換另一扇門會否增加...
蒙提霍爾問題(三門問題,概率論)C語言驗證
三門問題 亦稱為蒙提霍爾問題,出自美國的電視遊戲節目let s make a deal。問題的名字來自該節目的主持人蒙提 霍爾 monty hall 問題是這樣的 參賽者面前有三扇關閉著的門,其中一扇的後面是一輛汽車,選中後面有車的那扇門就可以贏得該汽車,而另外兩扇門後面則各藏有乙隻山羊。當參賽者選...