利用Python分析羊车门问题

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

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

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

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

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

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

  情况1:车 1/3

     情况:A羊 1/3

  情况:B羊 1/3

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

  情况:得车

  情况:不得

  情况:不得

  若更换所选门:

  情况:不得

  情况:得

  情况:得

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

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

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

   于是可以认为,

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

   同理,

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

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

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

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

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

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

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

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

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

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

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

        此时,不换的获胜数+1

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

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

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

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

利用Python分析羊车门问题

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))