本文使用蒙特卡羅方法驗證蒙提霍爾遊戲的結論。
以下**,本人原創!
import random
# 蒙提霍爾遊戲
def play_game(strategy='nonchange'):
# 門牌編號
doors = [0,1,2]
# 門後的獎品
gifts = ['goat', 'goat', 'car']
random.shuffle(gifts)
# 觀眾挑選一扇門(編號)
viewer_choice = random.choice(doors)
# 主持人從剩下的兩扇門中,開啟門後是是山羊的某一扇門(編號)
host_open = random.choice(list(filter(lambda x:gifts[x]=='goat' and x!=viewer_choice, doors)))
# 順便,也標記剩下的一扇門(編號)
viewer_lift = list(filter(lambda x:x!=viewer_choice and x!=host_open, doors))[0]
# 觀眾根據策略獲得的獎品
viewer_gift = [gifts[viewer_choice], gifts[viewer_lift]][strategy=='change']
# 根據策略成功與否,返回 1、0 (為方便計數)
return [0, 1][viewer_gift=='car']
# 遊戲次數
n = 10000
# 蒙特卡羅方法,模擬 n 次遊戲
# 策略一:不改變選擇
p = sum((play_game('nonchange') for _ in range(n))) / n # 頻率 ≈ 概率
print('nonchange:', p)
# 蒙特卡羅方法,模擬 n 次遊戲
# 策略二:改變選擇
p = sum((play_game('change') for _ in range(n))) / n # 頻率 ≈ 概率
蒙提霍爾遊戲 python 模擬
本文使用蒙特卡羅方法驗證蒙提霍爾遊戲的結論。以下 本人原創!import random 蒙提霍爾遊戲 defplay game strategy nonchange 門牌編號 doors 0,1,2 門後的獎品 gifts goat goat car random.shuffle gifts 觀眾挑...
蒙提霍爾問題
蒙提霍爾問題 蒙提霍爾問題,亦稱為蒙特霍問題或三門問題 英文 monty hall problem 是乙個源自博弈論的數學遊戲問題,大致出自美國的電視遊戲節目 let s make a deal。問題的名字來自該節目的主持人蒙提 霍爾 monty hall 這個遊戲的玩法是 參賽者會看見三扇關閉了的...
蒙提霍爾問題
問題 參賽者會看見三扇關閉了的門,其中一扇的後面有一輛汽車,選中後面有車的那扇門就可以贏得該汽車,而另外兩扇門後面則各藏有乙隻山羊。當參賽者選定了一扇門,但未去開啟它的時候,節目主持人會開啟剩下兩扇門的其中一扇,露出其中乙隻山羊。主持人其後會問參賽者要不要換另一扇仍然關上的門。問題是 換另一扇門會否...