蒙提霍尔游戏 python 模拟

mac2022-06-30  101

本文使用蒙特卡罗方法验证蒙提霍尔游戏的结论。

以下代码,本人原创!

完整代码

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 # 频率 ≈ 概率 print('change:', p)

效果图

转载于:https://www.cnblogs.com/hhh5460/p/6713994.html

相关资源:解决三门问题python代码
最新回复(0)