作业完成人:
学号:20181703112,罗子健
学号:20181101052,蒋若辉
题目描述:有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。
1、按照你的第一感觉回答,你觉得不换选择能有更高的几率获得汽车,还是换选择能有更高的几率获得汽车?或几率没有发生变化?
答:换了几率更大
2、请自己认真分析一下“不换选择能有更高的几率获得汽车,还是换选择能有更高的几率获得汽车?或几率没有发生变化?” 写出你分析的思路和结果。
答:
思路1
这里有三个门
首先你随机选择一个门 , 然后主持人打开一个有羊的门,
如果你选对了:
不改变选择就可以得到车 改变选择就得不到车
如果你没选对:
改变选择就可以得到车 不改变选择就得不到车
所以 这个问题变成了 两个随机数(一到三之间)是否相等的问题
按照数学的概率来算
两个数相等(不改变选择):1/3
两个数不相等(改变选择):2/3
思路2
这种解法就是严格模拟“羊与车”题面所叙述的过程。
首先我们先声明两个变量change和unchange用0表示表示门里有羊,1表示门里有车,先随机生成‘001’的全排列,再模拟玩家选择一扇门,如果选的是有车的门,主持人开启一扇有羊的门,这时参赛者就只用在剩下的门二选一,如果换了就不得奖,不换就得奖,这时我们在生成一个0或1的随机数(0表示不换,1表示换),如果随机数为0,不换,参赛者得奖unchange+1;如果选的是有羊的门,主持人开启另一扇有羊的门,这时参赛者也在剩下的门二选一,如果换了就得奖,不换就不得奖,这时我们在生成一个0或1的随机数(0表示不换,1表示换),如果随机数为1,换了,参赛者得奖,change+1。循环100000次,比较unchange多还是change多,如果unchange多则不换赢面大,change多则换的赢面大。
3、请设法编写程序验证自己的想法,验证的结果支持了你的分析结果,还是没有支持你的分析结果,请写出程序运行结果,以及其是否支持你的分析。(提示:可以借助随机数函数完成此程序)
4、请附上你的代码。(提示:使用编辑器中的插入代码功能,将代码显示为 Python 风格)
代码如下
思路1代码
import random
change,nochange=0,0
for i in range(1,100000):
if random.randint(1,3)==random.randint(1,3):
nochange+=1
else:
change+=1
print("不改选中概率:{}%".format(nchange/1000))
print("改选中概率:{}%".format(change/1000))
程序运行结果:
不改选中概率:33.319%
改选中概率:66.68%
成功
思路2代码
import random
change=0
unchange=0
for i in range(0,100000):
a=random.randint(0,1)
if a==0:
b=random.randint(0,1)
if b==0:
c=1
else:
c=0
else:
b=0
c=0
i=random.randint(0,2)
arr=[a,b,c]
if arr[i]==1:
e=random.randint(0,1)
if e==0:
unchange+=1
else:
e=random.randint(0,1)
if e==1:
change+=1
print(change)
print(unchange)
if change>unchange:
print("change")
else:
print("unchange")
程序运行结果:
33404
16907
change
成功