A-A+

蒙提霍尔问题 (Monty Hall problem)python计算概率

2023年06月28日 14:50 学习笔记 暂无评论 共1618字 (阅读298 views次)

【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是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。

布施恩德可便相知重

微信扫一扫打赏

支付宝扫一扫打赏

×

给我留言