看到一个关于“三门问题”的视频,第一感觉就是视频的结论是错误的。本来想一笑置之,但看了评论,一头雾水:这三个问题的答案是什么?作为一个勤奋的码农,我不知道最终的答案。bemyself”。如果你想挑战自己,可以跳过推理和结论部分,自己想出一个答案,然后看看是否正确。朋友圈花了一个小时发了这样的朋友圈理解三门问题:三门问题:一共有三扇门,其中一扇在汽车后面,另外两扇是山羊。选择一扇门后,主持人用山羊。那么,这个时候换门会不会增加拿到车的概率呢?第一个错误:直觉,换不换的概率是1/2;我差点说到这里就停了下来,结论都是骗人的。第二个错误:list,(选1,转2,改),(选2,转1,改),(选3,转1,不改),(选3,转2,不改),看到好像概率还是1/2。但是这里搞错了,第一个选择的概率没有介绍,就是后面两个cases不能算作1/4,只能算作1/6。第三次引入概率:1/3(选1,去2,变),1/3(选2,去1,变),1/6(1/3*1/2)(选3,去to1,doesn'tchange),1/6(1/3*1/2)(选择3,转到2,不改变),最后两项的总概率只有1/3。因此,三个问题的答案是:选择改变。概率将从1/3变为2/3;通过这个问题,我在想:有时候,坚持可能是错的,可能是主观判断,环境可能已经变了;对答案持怀疑态度并继续寻找。从底层逻辑来说,就是:坚持动态地看问题。即:三日不以倾慕相待。发了这个朋友圈后,觉得这个问题需要通过一个程序来实现,同时写一篇文章分享一下,于是就有了这篇文章。如果上面的分析看不懂也没关系,下面我们结合代码来分析实践一下。三门题三门题出自美国电视游戏节目Let'sMakeaDeal,题名来自节目主持人MontyHall。问题场景:参赛者看到三扇紧闭的门,其中一扇门后面有一辆汽车,后面有车的门获胜,另外两扇门后面各藏着一只山羊。当参赛者选择了一扇门但没有打开时,节目主持人打开了剩下的两扇门中的一扇,露出了其中一只山羊。然后主持人会询问参赛者是否要换到另一扇仍然关闭的门。问题是:切换到另一扇门是否会增加参赛者赢得汽车的机会。据说90%的人选择不改变。你的选择是什么?概率分析,先看下图。有汽车、山羊1、山羊2和三扇门:三扇门的概率是1/3。玩家选择三扇门的概率是1/3。假设:假设参赛者选择山羊1,那么主持人开的门只能是山羊2,因为有车的门打不开。这种情况发生的概率为:1/3(玩家选择山羊1的概率)*1(宿主的选择是确定的)=1/3;这时换车,就赢了车;假设玩家选择山羊2,那么主持人开的门只能是山羊1,因为有车的门是打不开的。这种情况发生的概率为:1/3(玩家选择山羊2的概率)*1(宿主的选择是确定的)=1/3;这时换车,就赢了车;假设玩家选择汽车,那么主持人有两个开放选项:山羊1和山羊2。主持人选择山羊1的概率:1/3(参赛者选择汽车的概率)*1/2(主持人选择两者之一)=1/6;主持人选择山羊2的概率:1/3(参赛者选择汽车的概率Probability)*1/2(主持人选择二者之一)=1/6;因此,当参赛者选择车门时,出现的概率为:1/3*1/2+1/3*1/2=1/3。如果此时不换,就赢了车;显然,三种情况的概率都是三分之一,换车后赢车的概率是不换车的两倍。也就是说:换了之后,中车的概率变成了2/3。上面做了程序演示的理论分析,下面写一段代码验证一下:publicclassThreeDoors{/***随机选择器*/privatestaticfinalRandomRANDOM=newRandom();/***成功总次数*/privatestaticintSUCCESS_COUNT=0;/***重复执行10w次*/privatestaticfinalintPLAY_TIMES=100000;publicstaticvoidmain(String[]args){//执行游戏10w次for(inti=0;i
