利用Python分析羊车门问题

题目描述:有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。

1、按照你的第一感觉回答,你觉得不换选择能有更高的几率获得汽车,还是换选择能有更高的几率获得汽车?或几率没有发生变化?

答:换几率更高,在电影《决胜21点》中看过这个问题。

 

 

2、请自己认真分析一下“不换选择能有更高的几率获得汽车,还是换选择能有更高的几率获得汽车?或几率没有发生变化?” 写出你分析的思路和结果。

 

答:可以把这题当作一个概率问题,分析如下:

   设三门后面分别为车,A羊,B羊。则第一次选门的时候,可以分为以下三种等概情况:

   情况1:车 1/3

      情况2A1/3

   情况3B1/3

   接下来,若不更换所选门:

   情况1:得车

  情况2:不得

  情况3:不得

   若更换所选门:

   情况1:不得

  情况2:得

  情况3:得

   显然,换的情况概率为2/3,高于不换的1/3。故换选择有更高的几率。

 

   此外,还可以用一种我自认为容易理解的解释来说明我的答案:

    在主持人打开羊门之后,剩下的门无非一扇车门,一扇羊门。若我们换门,那么必然会改变先前的结果。(车门变羊门,羊门变车门)。

    于是可以认为,

    先前选到车门的概率==更换后选到羊门的概率;

   同理,

    先前选到羊门的概率==更换后选到车门的概率;

   也就是说,更换后选到车门的概率是2/3。而先前选到车门不换的概率是1/3。还是换选择概率更高。

 

  注:和同学讨论过后,这里提一下我认为为什么答案不是1/2

   如果换与不换得车概率均为1/2。那么题目就变为:“主持人先打开一扇有羊的门,在剩下的两个门中你进行选择,求得车的概率。”

   我认为关键的是:若你不更换门的话,主持人开门这一事件并不影响你选到的是车门的概率。

 

 

3. 请设法编写程序验证自己的想法,验证的结果支持了你的分析结果,还是没有支持你的分析结果,请写出程序运行结果,以及其是否支持你的分析。

答:基于上述分析,我认为其实根本不必模拟追踪门的过程。

       方法如下:1).声名两个变量,mancar,分别代表你的初次选择和车门的位置。

         再声名两个变量,换门获胜数与不换门获胜数,用于记录结果。

       2).利用random库中的randint产生1~3范围内的随机数,对两个变量分别赋值。

       3).若赋值后,car==man,则说明一开始选择的便是车门,

        此时,不换的获胜数+1

            否则,意味着一开始选择的是羊门,则换的获胜数+1

       4).将上述过程重复足够大的基数,计算概率,验证结论。

 

       实验结果如下:分别将过程重复1000遍,10000遍,十万遍,一百万遍。

         重复基数越大,不换与换获胜的几率分别越接近于1/32/3。验证了之前的猜想。

        

 

4请附上你的代码

代码如下:

import random as r

#总次数
total=1000000 #1000,1W,10W,100W
#换与不换的获胜次数
win1=0
win2=0

for i in range(total):
    #模拟选择过程
    man=r.randint(1,3)
    car=r.randint(1,3)
    #结果:一开始为车门,不换+1.
    #       否则则一开始为羊门,换+1.
    if man==car:
        win1+=1
    else:
        win2+=1

print("在{}次实验中:".format(total))
print("若不更改门,获胜概率为{:.3}%.".format((win1/total)*100))
print("若更改门,获胜概率为{:.3}%.".format((win2/total)*100))

 

 

 

 

posted @ 2018-11-25 11:15  Kee1ongZ  阅读(9623)  评论(1编辑  收藏  举报