羊车门问题

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

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

答:没变化。因为打开了一扇羊的门,剩下两个门概率都是1/2。

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

答:换选择获得汽车概率更高。一开始选中汽车的概率为1/3,打开一扇羊的门后,换选择成功(第一次选为羊)的概率变为2/3 * 1  =  2/3 ;不换(第一次选为车)而成功的概率为 1/3 。

3、请设法编写程序验证自己的想法,验证的结果支持了你的分析结果,还是没有支持你的分析结果,请写出程序运行结果,以及其是否支持你的分析。(提示:可以借助随机数函数完成此程序)。

答:

  1..输入模拟次数time。

  2.times = 0,当times <= time 时,执行第3步,否则,执行第9步。

  3.设0代表羊,1代表车。

  4.定义一个列表,元素为0,0,1,并且随机排序。

  5.随机抽出一个元素来(设为a),再从列表中删除一个0。

  6.如果换选择的话,则再从列表中删去a,取出最后一个元素(设为b);不换选择的话,最终选择为a。

  7.若a是1,则i++;若b是1,则j++。

  8.times++,返回第2步。

  9.计算各个概率,并输出。

结果:不换而成功的概率为:0.334;换选择而成功的概率为:0.666。支持。

4、请附上你的代码。(提示:使用编辑器中的插入代码功能,将代码显示为 Python 风格)

代码如下:

 1 import random
 2 
 3 i,j,times = 0,0,0
 4 time = eval(input("请输入总模拟次数:"))
 5 
 6 while times < time:
 7     ls = [0,0,1]
 8     random.shuffle(ls)
 9 #    print(ls)   测试是否打乱排序
10     a = ls[random.randint(0,2)]
11 #    print("a =",a) 
12     ls.remove(0)
13     ls.remove(a)
14     b = ls[0]
15 #    print("b =",b)
16     if a == 1:
17         i = i + 1
18     if b == 1:
19         j = j + 1
20     times = times + 1
21 print("不换而成功的概率为:{:.5f}".format(i/times))
22 print("换选择而成功的概率为:{:.5f}".format(j/times))

 

posted @ 2018-04-26 22:01  落月成孤倚♪  阅读(146)  评论(0编辑  收藏  举报