标签:body nis finish not change 方法 编程 计算 培训
近期公司培训讲到了三门问题。题目这样:
这个游戏的玩法是:参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门就可以赢得该汽车,而另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人会开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机会率?如果严格按照上述的条件的话,答案是会—换门的话,赢得汽车的机会率是 2/3。
这条问题亦被叫做蒙提霍尔悖论:虽然该问题的答案在逻辑上并不自相矛盾,但十分违反直觉。这问题曾引起一阵热烈的讨论。
这里按 古典方法,概率空间方法,和编程方法 都走一遍
3个门中,1个门后面有汽车,其他2个门后面有山羊,共有3处等可能的情况。如果坚持选择门1不换,如下表所示,只有第一种情况下可以获得汽车,而第二种与第三种情况下都得到山羊。因此,得到汽车的概率是1/3。
门1 | 门2 | 门3 | 坚持选择门1的结果 |
汽车 | 山羊 | 山羊 | 得到汽车 |
山羊 | 汽车 | 山羊 | 得到山羊 |
山羊 | 山羊 | 汽车 | 得到山羊 |
如果获胜者选择门1,当主持人打开门2或门3中有山羊的一扇门后,他在剩下的门中选择一个,就会出现下表所示的结果。
门1 | 门2 | 门3 | 获胜者的选择 | 重新选择的结果 |
汽车 | 山羊 | 山羊 | 门1换为门2或门3 | 得到山羊 |
山羊 | 汽车 | 山羊 | 门1换为门2 | 得到汽车 |
山羊 | 山羊 | 汽车 | 门1换为门3 | 得到汽车 |
可以看到,重新选择另一扇门,得到汽车的概率将会变成2/3。因此,重新选择更有利。
拓展:100个门呢?
如果你拒绝改变,你只有在一开始就选择了正确的门的情况下才能获取汽车,这个概率只有1%。在另外99%的情况下,你最初选择的是一个后面是山羊的门,而另外的98扇已经打开,你这时改变最初的选择就可以成功。所以,在99%的概率下,改变选择是正确的。
#!/usr/bin/python #coding=utf-8 #__author__=‘dahu‘ #三门问题 import random #伪随机性 from random import SystemRandom #真随机 N=3 change =True #false就是不换,true就是换 Total = 10000 cunt=0 for i in xrange(Total): car =SystemRandom().randrange(1,N+1) first_choose=SystemRandom().randrange(1,N+1) if first_choose==car: #如果一开始就猜对了,则主持人选完后剩下的那个,就是随便留一个 lefted=(car + 1)%N+1 else: #如果一开始猜错了,剩下的那个只能留汽车了 lefted=car last_choose=lefted if change else first_choose cunt += (last_choose == car) ss=[‘不换‘,‘换‘] print ‘换不换?\t%s\n正确率:%f\n‘%(ss[change], 1.0*cunt/Total)
/usr/bin/python2.7 /home/dahu/My_tools/change_or_not.py 换不换? 换 正确率:0.657400 Process finished with exit code 0
我们这里用编程模拟下100个门的情况:修改参数N=100,答案很显然。
/usr/bin/python2.7 /home/dahu/My_tools/change_or_not.py 换不换? 换 正确率:0.990090 Process finished with exit code 0
还是得换,换的概率是2/3
标签:body nis finish not change 方法 编程 计算 培训
原文地址:http://www.cnblogs.com/dahu-daqing/p/6746480.html