三门问题代码

三门问题代码三门验证代码 publicstatic 换门的获奖总次数 intchangeWin 0 不换门的获奖总次数 intunChangeW 0 Randomrandom newRandom for inti 0 i lt 1000 i

三门验证代码

public static void threeDoorsTest(){ //换门的获奖总次数 int changeWinCount = 0; //不换门的获奖总次数 int unChangeWinCount = 0; Random random = new Random(); for(int i=0; i<1000; i++) { List 
  
    doors = new ArrayList (Arrays.asList(0,1,2)); int bonusDoor = random.nextInt(3) ; int selectedDoor = random.nextInt(3) ; //主持人打开一扇空门 for(int j=0;j 
    
  

代码输出结果如下:

 

不换门获奖次数:327

换门获奖次数:673

 

数据结果显而易见,不换门获奖的比例占了约1/3,换门获奖的比例占了2/3。

 

附录分析:

回顾问题

这个数学问题来源于一个娱乐节目。节目中有一位参与者和一位主持人,在参与者的面前有三扇关闭的门,其中两扇门的后面是空的,剩下一扇门后是一辆法拉利跑车。

主持人知道哪一扇门后面有跑车,但参与者不知道。此时让参与者人选一扇门,如果选择的是后面有跑车的那扇门,跑车就作为奖励送给参与者。

问题一直到这里都很简单:一共有三扇门,参与者随机做选择,获奖几率肯定是1/3。

 

下面是问题的重点,当参与者进行选择以后,暂时先不打开这扇门,接下来主持人把剩下两扇门当中的一扇打开,是空门

此时主持人给了参与者重新选择的机会:可以坚持刚才选择的门(在图中是2号门),也可以换另一扇没有打开的门(在图中是1号门)。

如果你是游戏参与者,你怎样选择的获奖率更大?获奖率又是多少?

 

 

匪夷所思的答案

 

自己刚刚看到这个问题的,也颇不以为然:

这种题还用问吗?有三扇门的时候,获奖率是1/3;现在排除了一扇门,剩下两个门二选一,换门或不换门,获奖率应该都是50%才对呀?

但是,正确答案是十分 “反直觉” 的:

换门的获奖率是 2/3

不换门的获奖率是 1/3

 

What’s the hell?这简直是匪夷所思啊!

 

留言区里,许多小伙伴提出了质疑,许多人的想法和当初小灰自己的想法差不多:

 

“当最后剩下两扇门的时候,此时讨论的获奖率应该是一个独立事件,和之前参与者怎么选择,以及主持人打开空门这些事,应该完全无关才对呀?既然是一个独立事件,那么二选一,难道获奖率不是50%吗?”

 

对于这样的质疑,小灰十分理解。

 

首先需要明确一点,我们讨论的关于“换门”的获奖率不是一个独立事件,必须以第一次的选择作为基础。在概率学当中,这种情况叫做条件概率

 

那么,到底什么样才是独立事件呢?

 

举个例子,假如游戏的参与者本来是小灰,当小灰选择一扇门,而主持人打开一扇空门之后,不明真相的小红从外面跑了进来。小红并不知道当初小灰选择的是哪一扇门,只知道剩下两扇关闭的门中,有一扇门藏有奖励。

 

那么此时对于小红来说,无论选择哪一扇门,获奖率都是50%,因为小红是在做独立的选择,而不是基于第一次的选择来”换门”。

 

 

这才是所谓的 “独立事件”。

 

 

从多个角度来思考

 

那么,在“换门”的情况下,获奖率2/3又是怎么来的呢?

 

小灰上周的漫画里,利用了基于“贝叶斯理论”的思想来分析换与不换的获奖率:

 

直白地讲,就是把第一次选择和第二次选择的所有情况进行细化,分析出每一种情况下的条件概率,再把这些概率进行加总,得到了最终的结果:

 

不换门的获奖率 = (1/3 X 100%)+(1/3 X 0%)+(1/3 X 0%)=1/3

 

换门的获奖率 = (1/3 X 0%)+(1/3 X 100%)+(1/3 X 100%)=2/3

 

有些小伙伴看了分析以后,仍旧感到不以为然,OK,这一定是小灰讲得不够清楚。

 

那么这一次,就让小灰从更多的思考角度,来解释这个反直觉的问题。

 

角度一:

假设没有主持人帮助打开空门这一步,那么我们换门和不换门的获奖率各是多少呢?

 

此时,换门也包括两种换法,但无论怎样选择,获奖率都各占1/3:

 

而主持人打开空门的这一操作,让换门的获奖率提升了一倍。为什么呢?因为换门的选项从两个减少到一个,正确率自然加倍了,从原来的1/3,提升到了2/3;而不换门的获奖率,仍然固定在1/3:

 

角度二:

思考一个更加极端的例子,假如我们的游戏中有10000扇门,而不是3扇门。

 

此时,当你选择了一扇门之后,你的获奖率是一万分之一。接下来,主持人为你打开9998扇空门,这时候,你该不该换门呢?

 

显然是应该换的。因为不换门的情况下,你中奖的几率是微乎其微的,而换门的中奖几率高达9999/10000

 

角度三:

仍然回到三扇门的情况,在你第一次选择一个扇门的时候,你的获奖几率是1/3,这个是毫无疑问的。

 

如果此时给你一个“特殊选择”,让你要么坚持选定当前的门,要么把除了刚才选定的门以外的所有门全部打开,里面只要有任何一扇门有奖励,你就能获奖。那么,你觉得是否应该做出这个特殊选择呢?

 

显然,这个特殊选择的获奖率是2/3,你肯定应该做出这个特殊选择。

 

而在我们的问题当中,主持人替你打开一扇空门,留下你第一次选择的门和另一扇关闭的门,并给你一次换门的机会。

 

这个换门的选择,和刚才所描述的“特殊选择”,实际上是等价的。 

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

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

(0)
上一篇 2026年3月18日 下午12:02
下一篇 2026年3月18日 下午12:03


相关推荐

  • 《梦断代码》摘录及感悟「建议收藏」

    《梦断代码》摘录及感悟

    2022年1月22日
    39
  • pycharm整理代码格式_pycharm怎么变成黑色

    pycharm整理代码格式_pycharm怎么变成黑色black简介自动的代码格式化工具,兼容pep8,项目地址为:官方给出的简介:BlackistheuncompromisingPythoncodeformatter.Byusingit,youagreetocedecontroloverminutiaeofhand-formatting.Inreturn,Blackgivesyouspeed,determinism,andfreedomfrompycodestylenaggingabo

    2025年7月30日
    6
  • 免费谷歌云服务器,极简到手指南

    免费谷歌云服务器,极简到手指南1 关于 GoogleCloud 申请必备谷歌账号 x1 visa 信用卡 x1 自带梯子 百度操作指南一大把 不做重复劳动了现在只有 300 美金 90 天体验啦 2 服务器创建假定你已经成功第一步 1 创建实例到此实例创建完成 但还需设置 可在其他终端自由登陆 2 服务器 root 账户 密码等设置剩下的更改操作 在网上找到篇很好的指南 推荐链接添加链接描述 3 其他终端连接推荐 finalshell 链接 谢谢

    2026年3月18日
    2
  • qt tcpsocket 接收数据_如何给微信好友发送指定位置

    qt tcpsocket 接收数据_如何给微信好友发送指定位置在网络应用中,有时候我们会遇到这样的问题,用TCP不断的接收和发送不同类型的数据,数据大小,格式都不相同,起初看了qt的例子,按照例子写的程序效果相当的不好,尤其是在连续发送大数据的时候,接收端根本无法判断数据是否完整了,也不知道什么时候取读取,经过各种折腾加上看qt源码,总结出了这个方法,发送的时候,要先发送这个数据序列化后的大小,然后发送这个数据本身,接收端,首先收到了要接收数据的大小,心里有

    2025年10月10日
    7
  • java课设_Java 课设

    java课设_Java 课设展开全部简单的五子棋程序新建一个chess类,其中代码如下packagework;importjava.awt.Color;publicclassChess{publicstaticfinalintdiamter=30;privateintx;//在网格中的索引,0~e68a84e8a2ad62616964757a686964616f3133323865663715priva…

    2022年7月12日
    17
  • SVG可伸缩的矢量图形「建议收藏」

    SVG可伸缩的矢量图形「建议收藏」SVG可伸缩的矢量图形

    2022年4月20日
    52

发表回复

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

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