作者 | 程序员浩哥

责编 | 屠敏

三门问题(Monty Hall problem)亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,出自美国的电视游戏节目Let's Make a Deal。今天为大家进行完整分析。

话不多说,直接看题目。

三门问题

三门问题:参赛者的面前有三扇关闭着的门,其中一扇的后面是天使,选中后天使会达成你的一个愿望,而另外两扇门后面则是恶魔,选中就会死亡。

当你选定了一扇门,但未去开启它的时候,上帝会开启剩下两扇门中的一扇,露出其中一只恶魔。(上帝是全能的,必会打开恶魔门)随后上帝会问你要不要更换选择,选另一扇仍然关着的门。

普通人的直觉

按照常理,参赛者在做出最开始的决定时,对三扇门后面的事情一无所知,因此他选择正确的概率是1/3,这个应该大家都可以想到。

接下来,主持人排除掉了一个错误答案(有恶魔的门),于是剩下的两扇门必然是一扇是天使,一扇是恶魔,那么此时无论选择哪一扇门,胜率都是1/2,依然合乎直觉。

所以你作为参赛者,你会认为换不换都无必要,获胜概率均为1/2。但是,真的是这样吗?

题目分析

正确的答案是,如果你选择了换,碰见天使的概率会高达2/3,而不换的话,碰见天使的概率只有1/3。怎么来的?

我们用一个很通俗的方法,能让你一听就懂。首先刚开始选择的一扇门的概率为1/3,而另外两扇门的总概率为2/3。

现在上帝打开了其中一扇为恶魔的门,我们知道这个门后面不会再有天使,所以相当于这部分概率被第三个门持有。

剩下的那扇门的概率(2/3)相当于刚开始选择的门(1/3)的二倍。所以我们得换。

如果还没有听懂。我们可以假设有一百扇门,里边有99只都是恶魔。现在你随机选择一扇门,选择到天使的概率是1/100。

这时,上帝打开其中的98扇,里边都是恶魔。这时候就相当于99/100的概率都集中在了另一扇门里。自然,我们需要选择换。

贝叶斯证明 代码证明

为了验证结果,我用代码跑了一百万次。什么?用贝叶斯分析分析!太俗,咱们还是直接上代码。

 1func main() {2    //换门遇见天使的次数和不换门遇见天使的次数3    changeAngelCount, unchangeAngelCount := 0, 04    for i := 0; i < 1000000; i++ {5        //门的总数6        doors := []int{0, 1, 2}7        //天使门和选中的门8        angelDoor, selectedDoor := rand.Intn(3), rand.Intn(3)9        //上帝移除一扇恶魔门
10        for j := 0; j < len(doors); j++ {
11            if doors[j] != selectedDoor && doors[j] != angelDoor {
12                doors = append(doors[:j], doors[j+1:]...)
13                break
14            }
15       }
16        //统计
17        if selectedDoor == angelDoor {
18           unchangeAngelCount++
19        } else {
20            changeAngelCount++
21        }
22    }
23    fmt.Println("不换门遇见天使次数:", unchangeAngelCount, "比例:", (float32(unchangeAngelCount) / 1000000))
24    fmt.Println("换门遇见天使次数:", changeAngelCount, "比例:", (float32(changeAngelCount) / 1000000))
25}

跑了一百万次,结果当然不让我们失望!

所以,今天的问题你听明白了吗?评论区留下你的想法吧!

【End】

在全民抗疫的特殊时期下,在人员复杂、流动量大地方的出入口处都设置了无接触式无感红外人体测温系统

在这次疫情防控中,无感人体测温系统发挥了怎样的作用?高精准的无感人体测温系统的核心技术武器是什么?对于开发者们来说,大家应该了解哪些技术

今晚8点多场景疫情防控:解读云边端联动下的全栈 AI 技术应用

推荐阅读 

☞独家揭秘阿里自研飞天操作系统洛神平台如何支撑起 2684 亿全球大促!| 问底中国 IT 技术演进

☞微信回应钉钉健康码无法访问;谷歌取消年度 I/O 开发者大会;微软公布 Visual Studio 最新路线图 | 极客头条

☞为什么说Transformer就是图神经网络?

☞我在武汉卖手机

☞必看!Spark 进阶之路之「SparkSQL」入门概述 | 博文精选

☞比特币归谁所有?有人通过分析区块链数据集找到答案

你点的每一个在看,我认真当成了喜欢

漫画:跑上百万次代码验证三门问题相关推荐

  1. Java简单代码验证三门问题

    三门问题(Monty Hall problem)是一个有关于博弈论的趣味数学问题.问题名字来自美国的电视游戏节目Let's Make a Deal的主持人蒙提·霍尔(Monty Hall). 参赛者会 ...

  2. python如何运行代码_python上怎么跑(运行)代码

    有朋友刚刚学Python,打开Python之后输入打印hello world的语句之后不知道该咋办了,怎么才能将Python代码跑起来呢?下面我将给大家介绍几种方法. 接下来介绍几种运行python代 ...

  3. 一个快速实现彩屏应用的跨平台快速原型开发工具平台,最重要的是还免费!8ms.xyz平台原以为是单片机版墨刀,今天上去玩了才知道平台厉害的很,基于WEB端免搭建开发环境,跑的还是C代码编译出来的程序!

    哈哈哈哈,最近发现一个好用的在线编译.下载.烧录的跨平台快速原型开发工具平台,名字好记–8ms,单看名字是真的不知道干嘛的,不知道为啥叫这个?不多想了,好用就得分享给大家,独乐乐不如众乐乐呀-- 好用 ...

  4. Hubble:“百万原生代码+混合交易分析”的利器!

    长时间以来,人工智能和大数据一直作为孪生兄弟相互支撑. 但如今,生产与离线分析各自独立的传统信息化结构已经无法支撑AI的发展. 每个异构数据库产品之间的同步和数据冗余.业务的实时性需要流数据框架.ML ...

  5. 【发福利啦!】畅享上百万卡时NPU普惠算力,启智与昇思MindSpore社区联合推出算力支持计划

    启智社区与MindSpore联合,为MindSpore开发者提供 365天*24小时 上百万卡时的MindSpore+NPU普惠算力,欢迎MindSpore产学研开发者申请,基于MindSpore开发 ...

  6. php 跑马灯抽奖,JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)_javascript技巧...

    最近做了个项目,其中有项目需求是要实现跑马灯抽奖效果,实现此功能主要用到js相关知识,废话不多说,感兴趣的朋友可以阅读下全文. 开始之前先来看上篇文章遗漏的两个问题和几个知识点,是自己重构的过程中需要 ...

  7. GitHub上YOLOv5开源代码的训练数据定义

    GitHub上YOLOv5开源代码的训练数据定义 代码地址:https://github.com/ultralytics/YOLOv5 训练数据定义地址:https://github.com/ultr ...

  8. JAE京东云引擎Git上传管理代码教程和京东云数据库导入导出管理

    文章目录 Git管理准备工作 Git工具上传代码 发布代码装程序 mywebsql管理 京东云引擎小结 JAE京东云引擎是京东推出的支持Java.Ruby.Python.PHP.Node.js多语言. ...

  9. Windows下Git上传项目代码记录

    Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 1.在git服务上创建一个test项目: 2.https://git-for-windows.github.io/ ...

最新文章

  1. mysql根据当前时间删除_从日期时间早于另一项日期时间的Mysql表中删除
  2. 一个植物转录组项目的实战
  3. VTK:光标形状用法实战
  4. 同理心是通往成功架构的桥梁
  5. const int *a和int*const a 的区别详解
  6. mfc formview中的关闭视图函数_VC|API消息处理(回调函数+分支语句)与MFC中的消息映射函数...
  7. 解决Tensorflow2.0出现:AttributeError: module ‘tensorflow‘ has no attribute ‘get_default_graph‘的问题
  8. idea 非法字符 \ufeff
  9. bootstrap带图标的按钮与图标做连接
  10. ai初创企业商业化落地_初创企业需要问的三个关于人工智能的问题
  11. FastReport浏览器直接打印无须预览(2023终版)
  12. 免费股票数据接口api接口应该如何区分?
  13. vmoptions默认配置_idea VM options参数优化
  14. c语言小车程序,51单片机控制小车运动C语言代码
  15. http 502错误怎么解决?
  16. 风格化半调效果如何制作?教程来了
  17. 诚信比生命更重要,人不诚信难成正果
  18. 粒子摇摆 shader
  19. 千兆网口 Freescale ETSEC + Marvell 88E1111 uboot Linux 驱动分析
  20. Crayon:新研究指出让IT决策者夜不能寐的原因

热门文章

  1. RankLib参数翻译
  2. (三十九)数据的持久化存储-plist实现(XML属性表)
  3. Hive中Database、Table的创建与查询
  4. 矩池云上安装yolov4 darknet
  5. aixdb2安装手册_AIX下安装db2数据库步骤
  6. 天池学习赛:工业蒸汽量预测3——模型训练
  7. C++的reinterpret_cast
  8. Flutter进阶—使用自定义字体
  9. 冷光牙齿美白仪行业调研报告 - 市场现状分析与发展前景预测
  10. 2021-2025年中国云托管服务行业市场供需与战略研究报告