zoukankan      html  css  js  c++  java
  • 三门问题

    近期公司培训讲到了三门问题。题目这样:

    这个游戏的玩法是:参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门就可以赢得该汽车,而另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人会开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机会率?如果严格按照上述的条件的话,答案是会—换门的话,赢得汽车的机会率是 2/3。

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

    这里按 古典方法,概率空间方法,和编程方法 都走一遍

    1.古典方法

    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%的概率下,改变选择是正确的。

    2.概率空间

    对于概率问题来说,只要能把问题的概率空间构造出来,那么理论上所有相关的概率问题都可以解决掉。三门问题里涉及4个概率空间,然后要用概率转移函数的办法才能把这4个空间构造成一个整体的概率空间。如果把三门问题写清楚,其实概率转移函数也就学的差不多了。
    4个概率空间:
    第一个(Omega_{1},2^{Omega_{1}},mathbb{P}_{1})其中Omega_{1}={omega_{1},omega_{2},omega_{3}}其中omega_{i}代表车在第i个门里。mathbb{P}_{1}(omega_{i})=1/3
    第二个(Omega_{2},2^{Omega_{2}},mathbb{P}_{2})其中Omega_{2}={x_{1},x_{2},x_{3}} 其中x_{i}代表人选了第i个门。mathbb{P}_{2}(x_{i})=1/3
    第三个(Omega_{3},2^{Omega_{3}})其中Omega_{1}={y_{1},y_{2},y_{3}}其中y_{i}代表主持人去掉第i个门。
    第四个(Omega_{4},2^{Omega_{4}})其中Omega_{4}={z_{1},z_{2},z_{3}}其中z_{i}代表主持人去掉某个门后车在第i个门。
    第一个概率转移函数kappa_{1}=((omega_{i},x_{j}),y_{k})根据游戏规则,为若车在i人选了j主持人去掉k的概率。
    第二个转移函数kappa_{2}=((omega_{i},x_{j},y_{k}),z_{l})=delta_{il}就是如果il相等就取1否则取0。
    然后用概率转移函数的办法建立乘积空间,这个乘积空间就是我们要的三门问题的概率空间。
    三门问题中不换门而选中的概率是个条件概率,已知选了i门,主持人去掉j门的情况下车在i门的概率用Lebesgue积分计算如下:mathbb{P}_{1}igotimes mathbb{P}_{2}igotimes kappa_{1}igotimes kappa_{2}(Omega_{1}	imes x_{1}	imes y_{2}	imes z_{1})=int_{Omega_{1}}mathbb{P}_{1}(domega_{1})int_{x_{1}}mathbb{P}_{2}(dx_{2)}int_{y_{2}}kappa_{1}int_{z_{1}}kappa_{2}=1/18,而mathbb{P}_{1}igotimes mathbb{P}_{2}igotimes kappa_{1}igotimes kappa_{2}(Omega_{1}	imes x_{1}	imes y_{2}	imes Omega_{4})=int_{Omega_{1}}mathbb{P}_{1}(domega_{1})int_{x_{1}}mathbb{P}_{2}(dx_{2)}int_{y_{2}}kappa_{1}int_{Omega_{4}}kappa_{2}=1/6所以最后的概率是1/3

    3.python编程模拟

     
    #!/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 '换不换?	%s
    正确率:%f
    '%(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

     
  • 相关阅读:
    Sonar代码分析实战(2)——1.1.1 Sonar安装环境要求
    无法在Mac Os下通过Gem安装Mysql
    HBase replication 代码分析
    ThinkPHP报js错误:Uncaught ReferenceError: out is not defined
    在Linux用tar归档压缩文件时忽略某些文件和目录
    mysql errno: 150 错误 外键
    2012年最经典的HyperV精品文章60篇
    三届(2012、2011、2009)KDD Cup内容、数据源和论文
    CVS安装及用户配置
    flex>MXML语法 小强斋
  • 原文地址:https://www.cnblogs.com/dahu-daqing/p/6746480.html
Copyright © 2011-2022 走看看