作者 | 小詹责编 | 郭芮

本文我们用Python分析著名的“三门问题”。

不过在这之前 ,可以先来说点类似的。假如三个盒子里各有一个球,一次选择机会摸奖。你摸到了球,就奖励你一个脱发再续膏,解决程序员秃头烦恼。如果没摸到?那你就秃头吧......

Python实现之基本操作:

for i in range(time):box = [0,0,0] my_choice = random.randint(1,3) box[random.randint(1,3) - 1] = 1if (i)%30==0: print("\n")if box[my_choice - 1]: count = count + 1 print("",end=" ")else: print("",end=" ")print("\n",count*100/time,"%")

概率是三分之一,这个没得跑,继续往下看。

三门摸奖之死门

三个盒子里有一个球,一次选择机会摸奖。这次可以加点料,当你第一次选择之后,上帝准确告诉你剩余两个选择中有一个是错的,空盒子,现在你剩下了自己原来的选择,和上帝没告诉你的那个选择。

现在给你一个选择,换不换:

坚持第一眼确认过眼神的盒子;换成两个盒子里上帝没告诉你的盒子。上帝真好,为了给程序员发福利排除一个错误选项,二分之一概率很 OK,就那个确认过眼神的盒子吧。

Python实现之坚持我的选择:

defGod_hand(box,my_choice):all = 6 god_choice = random.randint(1,3)-1while god_choice == my_choice: god_choice = random.randint(1,3)-1if(box[god_choice]):return all - god_choice - my_choicereturn god_choice

God_choice = God_hand(box,my_choice)my_choice = my_choice

嗯???不还是三分之一嘛,这有啥?等等,好像有点不对的地方。

三门摸奖之生门

这次我想选上帝没告诉我的那个盒子,我觉得我好像发现了什么。

Python实现之选择那个上帝没告诉我的盒子:

God_choice = God_hand(box,my_choice)my_choice = 6 - my_choice - God_choice

没错三分之二,概率变了,变了,变了!这里面的原因有很多,可以喊 6。不过还是继续往下看,我慢慢解释。

三门摸奖之无门

三个盒子里有一个球,一次选择机会摸奖,现在我已经不想生发了,我就想知道怎么操纵概率,头发只是小事。

这次来加点猛料,当你第一次选择之后,上帝随便开一个盒子,如果上帝开出了球,游戏结束,没有开出来,就到你的回合了。

还是给你一个选择,换不换?——换啊,肯定换,继续有上帝之手帮我操作概率,这天下我唾手可得。

Python实现之上帝之手:

defGod_hand(box,my_choice):all = 6 god_choice = random.randint(1,3)while god_choice == my_choice: god_choice = random.randint(1,3)return god_choice

选上帝剩下的不行是吗 ,那我回来坚持我自己的......

Python实现之我的回合:

my_choice = my_choice

——你在逗我?这个上帝偷概率的。

好了,上面只是举个例子,下面我们来正经分析下三门问题的原型。

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

问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门、但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。

问题是:换另一扇门会否增加参赛者赢得汽车的机率?如果严格按照上述的条件,即主持人清楚地知道自己打开的那扇门后是羊,那么答案是会。不换门的话,赢得汽车的几率是1/3。换门的话,赢得汽车的几率是 2/3。

这个问题亦被叫做蒙提霍尔悖论:虽然该问题的答案在逻辑上并不自相矛盾,但十分违反直觉。这问题曾引起一阵热烈的讨论。

一般会用到的思路包括:横向的类比理解、纯数理计算、排列可能性。我的想法是,问题原型是三门问题,确实反直觉、反简单逻辑。于是我前后各自补充了两个实例,共三个渐进的问题:

摸奖;摸奖+上帝之手排除+可选;摸奖+伪上帝之手开奖+伪可选 。1、2 对比

1 三个里面总有两个是空的,上帝告诉我我没选的东西有什么用呢,我的选择不变,我的概率不变,依旧是三分之一。

1+1 先来两次 1,第一次我能选三个中的一个,过了几秒钟什么事情没发生,我可以换成别的,但我什么都不知道,怎么换还是三分之一。

2 第一次什么都不知道,但第二次选的时候我已经知道有一个排除项了,选那个非排除项、非首选项,选中几率扩大,而具体扩大的概率则需要定量数据分析,不是两个选择各自百分之五十,而是基于前两种情况下再做选择的概率分布。

更加重要的是,上帝是一个非随机的选择,上帝视角就决定了他对于随机概率的破坏。

对比结果

果然那个排除项不像想象中那么简单,拿到一个未知问题环境,应该坚持单一变量的原则,谨慎推导,增量修补,才能寻找到细微差异。

1、2、3 对比

探索从来不止于问题本身,为了更加深刻的探讨内涵,我增加第三项实验,如果这是个假上帝呢?他就和你一样,是一个选择者,他可能不是人,只是一个会产生结果,而它又从不会是你的选择。

于是,你回到了 1,相同的概率,你可能中途就知道自己选错了,也可能走到尽头才发现。你看似拥有选择,但你没有选择,你苦苦思索,希望做出更优的抉择,但是和一开始并无两样,你茫然依旧。

总结

这是一个简单复杂浅显深奥的概率问题,更不仅仅局限于数学。我可以在第二次让上帝之手放下无数空盒子打乱概率又发生变换,而概率在其中不同情况下的辗转变换,无一不彰显着一个永恒的真理:拥有选择权,才拥有概率。延伸一下,在更优的情况下,拥有选择权,才拥有更高的概率。

你知道勤奋占百分之九十九,但你不选这个盒子,任由上帝打开 。你知道兴趣多么助于你学习成长 ,但你不选这个盒子,任由其腐朽。你知道人工智能区块链量化交易的风口,但你不选这个盒子,任由别人打开。

我不愿你读过很多名人传记,发现过很多自己身上的影子,却懒惰愚昧的仰望着他们,把自己置于劣势的条件下做随机选择。

——谨以此文,与君共勉,走一条高概率成功的人生之路。

作者:小詹,一名双一流高校在读研究生 ,目前维护个人订阅号[小詹学Python]。主要涉及图像处理、网络爬虫、leetcode刷题和一些有趣的Python骚操作。声明:本文为作者投稿,版权归其个人所有。

热 文推 荐

iPhone 史上最大优惠;摩拜「裁员门」反转;百度网盘缩减空间 | 极客头条

程序员开发软件的意义到底在哪?

Eclipse 4.10.0 正式发布,全面拥抱 Java 11!

面向对象编程,再见!

云计算到底是怎么玩的?

00后也会「玩」区块链,你对「朝阳」行业焦虑啥 ?| 圣诞特辑(文末有福利)

何恺明等最新突破:视频识别快慢结合,取得人体动作AVA数据集最佳水平

霸气!女程媛征男友的需求说明书!

print_r('点个好看吧!');var_dump('点个好看吧!');NSLog(@"点个好看吧!");System.out.println("点个好看吧!");console.log("点个好看吧!");print("点个好看吧!");printf("点个好看吧!\n");cout << "点个好看吧!" << endl;Console.WriteLine("点个好看吧!");fmt.Println("点个好看吧!");Response.Write("点个好看吧!");alert("点个好看吧!")echo "点个好看吧!"

喜欢就点击“好看”吧!

python名人问题_如何用 Python 解读著名的“三门问题”?相关推荐

  1. python三维柱形图_如何用Python绘制3D柱形图

    本文主要讲解如何使用python绘制三维的柱形图,如下图 源代码如下: import numpy as np import matplotlib.pyplot as plt from mpl_tool ...

  2. python怎么读_如何用Python读写文件

    前面我们已经介绍了很多Python相关的基础知识,大家是不是对Python已经有了进一步认识了呢?作为人工智能时代的热门编程语言,开始接触并学习Python的孩子越来越多,家长们都不想让自己的孩子落于 ...

  3. python旅游推荐系统_如何用Python搭建一个简单的推荐系统?

    推荐系统的相关知识我们已在前文中提到,在这篇文章中,我们会介绍如何用Python来搭建一个简单的推荐系统. 本文使用的数据集是MovieLens数据集,该数据集由明尼苏达大学的Grouplens研究小 ...

  4. 用python开启相机_如何用Python打开realsenseD435相机并获取相机参数

    如何用Python打开realsenseD435相机 import pyrealsense2 as rs import numpy as np import cv2 if __name__ == &q ...

  5. python读取二进制文件_如何用python读取二进制文件?

    我发现用Python读取二进制文件特别困难.你能帮我一把吗?我需要读取这个文件,在Fortran 90中,该文件很容易被int*4 n_particles, n_groups real*4 group ...

  6. python md5加密_如何用python“优雅”的调用有道翻译?

    前言 其实在以前就盯上有道翻译了的,但是由于时间问题一直没有研究(我的骚操作还在后面,记得关注),本文主要讲解如何用python调用有道翻译,讲解这个爬虫与有道翻译的js"斗争"的 ...

  7. python求平均值_如何用python求平均值

    学习了Python相关数据类型,函数的知识后,利用字符串的分割实现了输入任意多个数据,并计算其平均值的小程序.思路是接收输入的字符串,以空格为分隔符,将分割的数据存入列表(lst1)中,将lst1中的 ...

  8. python小助手_如何用python写个人专属群聊提醒小助手?

    前言 大家还记得教会父母玩微信是什么时候吗?父母学会后,我们的生活就发生了「质」的变化,父母也许会吐槽你的微信头像不好,要你换一个头像. 最近 pk哥 又被母后大人吐槽了,原因是亲戚微信群里某个亲戚生 ...

  9. 如何用python计算圆周率_如何用python计算圆周率?

    如何用python计算圆周率? python计算圆周率的方法: 圆周率没有精确的计算公式,所以只能用近似的方式计算它的近似值. 我们运用蒙特卡罗方法,思路很简单,在下面图形中随机抛置大量的点, 计算落 ...

最新文章

  1. 创业公司CEO每天应该做的13件事
  2. WF4.0 基础篇 (十八) Flowchar
  3. 收音机磁棒天线4根接法_无线电科技基础:无声的海上GPS导航 天线接收的方向性...
  4. 成功解决Error: Cannot find module 'web3'
  5. VS2010 用WebBrowser控件 无响应
  6. 如何在移动端复制到剪切板
  7. Kafka学习(一)-------- Quickstart
  8. 【CDS技术揭秘系列 01】阿里云CDS-OSS容灾大揭秘
  9. SpaceNet 数据集
  10. linux设置ipsan_Linux下搭建iSCSI共享存储详细步骤(服务器模拟IPSAN存储)
  11. 计算机应用开机禁止打开,怎样设置电脑开机启动项禁止
  12. vs打开别人cpp_和女朋友定了间主题酒店,结果打开门后崩溃了...哈哈哈哈哈照片xswl!...
  13. 聚合接口对接,加油卡,流量充值,话费充值
  14. 工程部署: 低算力平台模型性能的优化
  15. Springboot拦截器实现IP黑名单
  16. mongotemplate 多表多条件查询记录
  17. 如何把一个qmake的Ubuntu手机应用打包为一个snap应用
  18. Vue入门 - 环境搭建Vue项目创建
  19. Python 语法(一)
  20. 小学计算机程序竞赛,25届宁波市中小学计算机程序设计竞赛初赛试题

热门文章

  1. 创意海报设计技巧怎么样才能提升
  2. IDEA 插件开发 一个只有一个输入框的弹出框
  3. 误删u盘文件夹怎么恢复?
  4. 读spi_flash的id
  5. 自动控制原理—自动控制系统性能的基本要求(一)
  6. 考研高数之无穷级数题型三:将函数展开成幂级数和傅里叶级数(题目讲解)
  7. WebAPi之SelfHost自创建证书启动Https疑难解惑及无法正确返回结果
  8. ADC 动态参数分析matlab code的几个问题(span,spanh取值问题,幅度比例因子的添加等)
  9. 算法学习笔记--OJ入门
  10. 后台管理系统基础配置