查看原文
其他

著名的三门问题,是在 “胡扯” 吗?

小灰 程序员小灰 2019-06-26

上周,小灰写了一篇关于“三门问题”的漫画,引起了小伙伴们的激烈争论。没看过的小伙伴可以看一看:


漫画:反直觉的 “三门问题”



回顾问题


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


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


问题一直到这里都很简单:一共有三扇门,参与者随机做选择,获奖几率肯定是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,你肯定应该做出这个特殊选择。


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


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




用代码来验证


上面所说的都仅仅是理论分析,我们不妨用代码来实际检验一下。


  1. public static void threeDoorsTest(){

  2. //换门的获奖总次数

  3. int changeWinCount = 0;

  4. //不换门的获奖总次数

  5. int unChangeWinCount = 0;

  6. Random random = new Random();

  7. for(int i =0; i<1000; i++){

  8. List<Integer> doors = new ArrayList(Arrays.asList(0,1,2));

  9. int bonusDoor = random.nextInt(3) ;

  10. int selectedDoor = random.nextInt(3) ;

  11. //主持人打开一扇空门

  12. for(int j=0;j<doors.size();j++){

  13. if(doors.get(j)!=selectedDoor && doors.get(j)!=bonusDoor){

  14. doors.remove(j);

  15. break;

  16. }

  17. }

  18. //获得换门的序号

  19. int changedDoor = doors.get(0);

  20. if(changedDoor == selectedDoor){

  21. changedDoor = doors.get(1);

  22. }

  23. //如果不换门有奖,unChangeWinCount加1;如果换门有奖,changeWinCount加1

  24. if(selectedDoor == bonusDoor){

  25. unChangeWinCount ++;

  26. }else if(changedDoor == bonusDoor){

  27. changeWinCount ++;

  28. }

  29. }

  30. System.out.println("不换门获奖总次数:" + unChangeWinCount);

  31. System.out.println("换门获奖总次数:" + changeWinCount);

  32. }


  33. public static void main(String[] args) {

  34. threeDoorsTest();

  35. }


代码输出结果如下:


不换门获奖次数:327

换门获奖次数:673


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



写在最后 


三门问题真的是一个非常有意思的数学问题。在上个世纪的美国,这个问题刚刚被提出的时候,也遭到过许多人的质疑,这些质疑者中有教师,有学者,甚至有数学家。后来人们经过了许多次实验,才逐渐达成共识。


质疑精神是值得鼓励的,有了质疑才能让思想进一步完善。对于小灰的漫画和文章,也欢迎大家随时提出更多的意见和想法。


最后,让我们来致敬一下 “三门问题” 的提出者,集才华和美貌于一身的天才人物 玛丽莲·沃斯·莎凡特。




—————END—————



安利一下小灰创建的免费知识星球

包含许多有趣的抢答活动和各种奖品,

关键是不要钱!欢迎大家扫码加入:



给个[在看],是对小灰最大的支持!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存