A-A+
蒙提霍尔问题 (Monty Hall problem)python计算概率
【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是txt格式!】
现在有3个箱子,只有一个箱子有宝物,让你来进行选择。你选择了其中一个箱子,这种情况下剩下的两个箱子中必定有一个是空箱子,此时打开这个空箱子,请问你是坚持你持有的箱子,还是更换选择,选择另一个没打开的箱子,哪个箱子有宝物的几率更大呢?
根据著名的“蒙提霍尔问题”(Monty Hall problem),更换选择的箱子会有较高的获胜概率。
假设您一开始选择的箱子为A,那么有宝物的箱子可以是A、B、C中的一个,每个箱子是有宝物的概率均为1/3。
现在主持人打开了一个空箱子,假设为C,因为主持人知道哪个箱子有宝物,所以他不会打开有宝物的箱子。因此,C是空箱子的概率为1,而A和B中有一个是有宝物的,因此它们中至少有一个的概率为2/3。
如果您坚持最初的选择,您赢得宝物的概率为1/3;而如果您更换选择,您赢得宝物的概率为2/3。因此,更换选择是更好的策略。
以下是一个用 Python 编写的蒙提霍尔问题验证概率的脚本:
import random
# 宝藏所在的箱子
treasure_box = random.randint(1, 3)
# 初始选择的箱子
initial_choice = random.randint(1, 3)
# 主持人打开的空箱子
empty_box = random.choice([box for box in range(1, 4) if box != initial_choice and box != treasure_box])
# 更换选择后的箱子
new_choice = [box for box in range(1, 4) if box != initial_choice and box != empty_box][0]
# 判断是否获得宝藏
if new_choice == treasure_box:
print("恭喜你,获得了宝藏!")
else:
print("很遗憾,你没有获得宝藏。")
# 输出结果
print("宝藏所在的箱子:", treasure_box)
print("初始选择的箱子:", initial_choice)
print("主持人打开的空箱子:", empty_box)
print("更换选择后的箱子:", new_choice)
运行脚本后,它将随机生成宝藏所在的箱子、初始选择的箱子和主持人打开的空箱子,并通过更换选择后的箱子来判断是否获得了宝藏。重复运行脚本多次后,将会发现更换选择的策略获胜的概率更高。
以下是更新后的 Python 脚本,可以运行100次,并计算出获得宝藏的概率:
import random
# 运行次数
num_runs = 100
# 统计获胜次数和总次数
num_wins = 0
num_total = 0
for i in range(num_runs):
# 宝藏所在的箱子
treasure_box = random.randint(1, 3)
# 初始选择的箱子
initial_choice = random.randint(1, 3)
# 主持人打开的空箱子
empty_box = random.choice([box for box in range(1, 4) if box != initial_choice and box != treasure_box])
# 更换选择后的箱子
new_choice = [box for box in range(1, 4) if box != initial_choice and box != empty_box][0]
# 判断是否获得宝藏
if new_choice == treasure_box:
num_wins += 1
num_total += 1
# 计算获胜概率
win_prob = num_wins / num_total
# 输出结果
print(f"运行了 {num_runs} 次实验")
print(f"获胜次数:{num_wins}")
print(f"获胜概率:{win_prob:.2f}")
运行脚本后,它将运行100次实验,并输出获胜次数和获胜概率。根据蒙提霍尔问题的解法,获胜概率应该接近于 2/3。您可以多次运行脚本,观察获胜概率是否接近于 2/3。
布施恩德可便相知重
微信扫一扫打赏
支付宝扫一扫打赏