“三门问题”的理解和Python验证

“三门问题”的理解和Python验证三门问题 MontyHallpro 亦称为蒙提霍尔问题 蒙特霍问题或蒙提霍尔悖论 大致出自美国的电视游戏节目 Let sMakeaDeal 问题名字来自该节目的主持人蒙提 霍尔 MontyHall 参赛者会看见三扇关闭了的门 其中一扇的后面有一辆汽车 选中后面有车的那扇门可赢得该汽车 另外两扇门后面则各藏有一只山羊 当参赛者选定了一扇门 但未去开启它的时候 节目主持人

三门问题(Monty Hall problem)亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目 Let’s Make a Deal。问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。

参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。

当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊(主持人肯定会开一扇有羊的门)。主持人其后会问参赛者要不要换另一扇仍然关上的门。

问题是:换另一扇门会否增加参赛者赢得汽车的机率?

1.直观理解

这时主持人会在后两扇门中打开一扇有山羊的门,也就是后面的2/3中又有一扇门被确定了

这里写图片描述

那么此时的2/3的概率会收缩到最后一扇门上,所以在后一扇门上的出现汽车的概率(2/3)会大于第一扇门。

所以换门会提高获得汽车概率

我们不妨把3个门的情况推广到100个门的情况,这时候理解起来会更直观。

此时还是应该换门。

2.列举

我们列举获得汽车的情况

第一种情况:汽车就在你一开始选的门后

此时不换门,汽车就是你的!!!

这里写图片描述

第二种情况:汽车在第二扇门后

主持人会帮你开第三扇门(他总是会给你开有羊的门)

此时你换门,汽车才是你的

这里写图片描述.

第三种情况:汽车在第三扇门后

主持人会帮你开第二扇门

综上,换门获得汽车的概率为2/3,而不换门得到汽车的概率是1/3。

3.用python来验证

首先是不换门的方法stay()

def stay(): doors = ['car','goat','goat'] #设置三扇门,其中两扇门后面是山羊,一扇门后是汽车 choose = choice(doors) #随机选择一扇门 if choose == 'car': #不换门则直接判断 return 'win' else: return 'lose'

也就是不换门就会选到汽车的情况。

然后是换门的方法switch():

def switch(): doors = ['car', 'goat', 'goat'] choose = choice(doors) doors.remove(choose) #选择的门放一边 doors.remove('goat') #剩下的门,去掉一只山羊 if doors == ['car']: #换门 return 'win' else: return 'lose' 

换门后会选到汽车的情况。

完整代码

from random import choice def stay(): doors = ['car','goat','goat'] #设置三扇门,其中两扇门后面是山羊,一扇门后是汽车 choose = choice(doors) #随机选择一扇门 if choose == 'car': #不换门则直接判断 return 'win' else: return 'lose' def switch(): doors = ['car', 'goat', 'goat'] choose = choice(doors) doors.remove(choose) #选择的门放一边 doors.remove('goat') #剩下的门,去掉一只山羊 if doors == ['car']: #换门 return 'win' else: return 'lose' if __name__ == '__main__': total =  count_switch = 0 win_switch = 0 count_stay = 0 win_stay = 0 for i in range(total): choose = choice([1,2]) #随机选择换门还是不换门 if choose == 1: count_switch += 1 if switch() == 'win': win_switch += 1 else: count_stay += 1 if stay() == 'win': win_stay += 1 print('换门次数:',count_switch) print('换门后得到汽车:',win_switch,'%.2f%%'%(100*win_switch/count_switch)) print('不换门:',count_stay) print('不换门后得到汽车:',win_stay,'%.2f%%'%(100*win_stay/count_stay)) 

运行情况:
这里写图片描述

由此也可以验证我们上面说的换门后获得汽车的概率为2/3的说法。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/230291.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月7日 下午2:01
下一篇 2026年3月7日 下午2:22


相关推荐

  • linux rpm卸载包及其依赖,Linux下如何用rpm卸载软件 rpm依赖包强制卸载

    linux rpm卸载包及其依赖,Linux下如何用rpm卸载软件 rpm依赖包强制卸载以Mysql为例。#查看安装的Mysql版本sjgx2:/usr/local/mysql/bin#rpm-qa|grep-imysqlMySQL-client-5.1.17-0.glibc23MySQL-server-5.1.17-0.glibc23#卸载sjgx2:/usr/local/mysql/bin#rpm-eMySQL-client-5.1.17-0.glibc23s…

    2026年2月15日
    6
  • 接触iSAM库

    接触iSAM库iSAM 全名 IncrementalS 不知到它和 g2o 比起来谁更 nb 或者这两个东西根本没有相似点 不管了 先下下来再说 之后再好好理解吧 这个库支持 Linux Unix Mac 平台 其他平台不支持 我用的是 ubuntu12 04 这个网址是其官网 http people csail mit edu kaess isam doc 按照官网上的指导

    2025年11月23日
    5
  • spring、springMvc、springBoot和springCloud的联系与区别

    spring、springMvc、springBoot和springCloud的联系与区别spring和springMvc:1.spring是一个一站式的轻量级的java开发框架,核心是控制反转(IOC)和面向切面(AOP),针对于开发的WEB层(springMvc)、业务层(Ioc)、持久层(jdbcTemplate)等都提供了多种配置解决方案;2.springMvc是spring基础之上的一个MVC框架,主要处理web开发的路径映射和视图渲染,属于spring框架中WE…

    2022年6月14日
    27
  • getElementById怎么调用

    getElementById怎么调用getElementById怎么调用浏览次数:1414次悬赏分:0|解决时间:2011-4-2818:27|提问者:匿名最佳答案首先都有一个Document对象然后你就可以借这个方法来引用网页文件中各个标签的属性了,当然这个被你引用的标签必须具有ID属性;比如,上面那个标签img就具有ID属性,那么我想获取他的图片地址,可以这么用Document.get

    2022年7月15日
    27
  • 108是几位数_印度尼西亚总人口数

    108是几位数_印度尼西亚总人口数求给定区间 [X,Y] 中满足下列条件的整数个数:这个数恰好等于 K 个互不相等的 B 的整数次幂之和。例如,设 X=15,Y=20,K=2,B=2,则有且仅有下列三个数满足题意:17=24+2018=24+2120=24+22输入格式第一行包含两个整数 X 和 Y,接下来两行包含整数 K 和 B。输出格式只包含一个整数,表示满足条件的数的个数。数据范围1≤X≤Y≤231−1,1≤K≤20,2≤B≤10输入样例:15 2022输出样例:3#include<bit

    2022年8月9日
    7
  • 强大易用的Excel转Json工具「建议收藏」

    强大易用的Excel转Json工具「建议收藏」好久没更新了,最近配置json文件的时候发现以前用的excel转json转换器不好用了,上网找了几个都不能满足需求,于是自己用python写了一个。工具不复杂,使用简单,但能满足几乎所有excel转json的要求了,包括多层嵌套,每一层定制为列表或者字典的输出格式,复杂单元格的定制。转载请注明出处:https://blog.csdn.net/ylbs110/article/details/506…

    2022年6月13日
    61

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号