Python实现蒙提霍尔悖论(羊车门问题)模拟与概率分析

Leo
Leo
发布时间:2026-10-13 | 3人浏览过
原创

本文深入解析经典的羊车门问题(蒙提霍尔悖论),通过Python代码模拟验证换门与不换门获得汽车的概率差异。分析表明,换门获胜概率为2/3,不换门为1/3。文章提供完整的Python模拟代码及运行结果,帮助读者直观理解概率变化逻辑,适用于Python入门及概率论学习。

问题背景:

场景设定为三扇关闭的门,其中一扇门后停放着一辆汽车,另外两扇门后各有一只山羊。主持人清楚每扇门后的物品分布。参赛者首先选择一扇门,在门被打开之前,主持人会开启剩余两扇门中藏有山羊的一扇,随后允许参赛者决定是否更换最初的选择。

核心疑问:

1、基于直觉判断,你认为保持原选择获得汽车的概率更高,还是更换选择获得汽车的概率更高?亦或是两种选择的概率完全相同?

回答:直觉上往往认为换与不换获得汽车的概率没有区别。

2、请仔细分析“保持原选择与更换选择,哪种方式获得汽车的概率更高,或者概率是否不变?”这一问题,并阐述你的分析思路及最终结论。

回答:

思路一:

假设条件:

一号门 二号门 三号门
羊 车 羊

情形一:玩家初始选择一号门,若选择更换则获得汽车,若不更换则获得山羊。 情形二:玩家初始选择二号门,若选择更换则获得山羊,若不更换则获得汽车。 情形三:玩家初始选择三号门,若选择更换则获得汽车,若不更换则获得山羊。

综合上述三种情形:玩家选择更换时获得汽车的概率为2/3,而选择不更换时获得汽车的概率为1/3。

思路二:

玩家初始选中汽车的概率为1/3,此时若选择更换,获得汽车的概率为1/3 * 0 = 0。 玩家初始选中山羊的概率为2/3,此时若选择更换,获得汽车的概率为2/3 * 1 = 2/3。

3、请编写程序验证你的观点,确认程序运行结果是否支持你的分析结论。请列出程序运行结果,并说明其是否印证了你的分析。(提示:可利用随机数函数实现此程序)

回答:

代码实现:

import random
x=random.randint(5000,10000)
change=0
nochange=0
for i in range(1,x+1):
  a=random.randrange(1,4)
  b=random.randrange(1,4)
  if a==b:
    nochange=nochange+1
  else:
    change=change+1
print("不更改选择得到汽车的概率为{}".format(nochange/x))
print("更改选择得到汽车的概率为{}".format(change/x))

运行结果:

不更改选择得到汽车的概率为0.33340982101881594
更改选择得到汽车的概率为0.666590178981184

总结

以上是关于Python实现羊车门问题(蒙提霍尔悖论)代码示例的完整内容,希望能对大家有所帮助。感兴趣的朋友可继续查阅本站相关文章,如“Python中requests爬取网页内容出现乱码的解决方法”及“Python编程之requests在网络请求中添加cookies参数的详细方法”等。如有不足之处,欢迎留言指正。感谢各位朋友对本站的支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表