本文使用蒙特卡罗方法验证蒙提霍尔游戏的结论。
以下代码,本人原创!
完整代码
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']
return [0, 1][viewer_gift=='car']
n = 10000
p = sum((play_game('nonchange') for _ in range(n))) / n
print('nonchange:', p)
p = sum((play_game('change') for _ in range(n))) / n
print('change:', p)
效果图