用python模拟证明三门问题
时间: 2024-11-08 17:17:22 浏览: 17
三门问题蒙特卡洛python代码
三门问题,也称为蒙提霍尔问题(Monty Hall Problem),是一个经典的概率谜题,通常用于解释条件概率的概念。在这个游戏中,你有三个关闭的门,其中一扇门后面有一辆汽车,其他两扇门后面有山羊。你随机选择了一扇门,主持人(比如计算机)会打开另外一扇你知道有山羊的门。然后问你是否想改变你的选择。
用Python来模拟这个问题,你可以创建一个函数来代表每个步骤:
```python
import random
def monty_hall_simulation(num_trials, switch_choice=True):
car_position = 0 # 假设汽车最初在第一扇门
goat_positions = [1, 2] # 初始状态下山羊在第二和第三扇门
wins = 0
for _ in range(num_trials):
player_choice = random.choice([0, 1, 2]) # 你随机选择一扇门
if player_choice == car_position:
continue
# 主持人知道位置并开另一扇门
host_choice = random.choice(goat_positions)
if switch_choice:
# 如果按照策略改变选择,你应该选剩下的那扇门
new_player_choice = [i for i in [0, 1, 2] if i != player_choice and i != host_choice][0]
else:
new_player_choice = player_choice
if new_player_choice == car_position:
wins += 1
return wins / num_trials * 100, "Switch" if switch_choice else "Stay"
# 模拟1000次游戏
results, advice = monty_hall_simulation(1000)
print(f"当你{advice}时,赢得游戏的概率大约是{results:.2f}%")
阅读全文