题目描述:有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。
1、按照你的第一感觉回答,你觉得不换选择能有更高的几率获得汽车,还是换选择能有更高的几率获得汽车?或几率没有发生变化?
答:我的第一感觉,当然是换不换得到车的概率都一样啊,有啥区别吗,概率都一样吧
2、请自己认真分析一下“不换选择能有更高的几率获得汽车,还是换选择能有更高的几率获得汽车?或几率没有发生变化?” 写出你分析的思路和结果。
答:其实我是先做的第三步,写代码的思路是通过多次随机试验得到的结果进行判断
上边这个截图就是我进行了1000000次随机试验之后得到的结果,明显是更换选择比不更换选择更容易的到汽车,更换选择得到汽车的概率占总共得到汽车概率的2/3
得到这个结果之后开始仔细的分析,代码应该是没错的,那就开始编答案往结果上凑吧。
以下是我的分析过程:
大概是有四种情况:不换选择得到汽车 更换选择得到汽车
不换选择得不到汽车 更换选择得不到汽车。
首先是第一种情况,不换选择得到汽车,这就需要第一次选择的时候选择了1/3概率的有车的门,然后执行了有1/2概率的不换选择操作,所以第一种情况的概率是1/3*1/2=1/6
同理第二种情况,不换选择得不到汽车,首先选择了2/3概率的有羊的门,然后执行了1/2概率的不换选择操作,所以第二种情况的概率是2/3*1/2=1/3
同理第三种情况更换选择得到汽车的概率是2/3*1/2=1/3,第四种情况更换选择得不到汽车的概率是1/3*1/2=1/6
所以得到的结果是更换选择比更换选择得到汽车的概率更大,更换选择得到汽车的概率占总共得到汽车概率的2/3
3、请设法编写程序验证自己的想法,验证的结果支持了你的分析结果,还是没有支持你的分析结果,请写出程序运行结果,以及其是否支持你的分析。(提示:可以借助随机数函数完成此程序)
答:因为先用代码得到的结果然后再进行的分析,所以我的结论当然支持了我的代码
4、请附上你的代码。(提示:使用编辑器中的插入代码功能,将代码显示为 Python 风格)
代码如下:
import random def rand(): n=random.randint(1,3) return n TIMES=eval(input("实验次数:")) TimesChange=0 TimesChangeCar=0 TimesCar=0 def major(): global TimesChange global TimesChangeCar global TimesCar car=random.randint(1,3) choice=rand() opendoor=rand() while True: if opendoor==car or opendoor==choice: opendoor=rand() else: print("{}号门后是车,选手选择{}号门,主持人打开{}号门".format(car,choice,opendoor)) break change=random.randint(0,1) if change==0: print("选手坚持自己的选择,他得到的是{}".format("汽车" if car==choice else "山羊")) else: TimesChange=TimesChange+1 print("选手更换自己的选择,他得到的是{}".format("山羊" if car==choice else "汽车")) if change==1 and choice!=car: TimesCar=TimesCar+1 TimesChangeCar=TimesChangeCar+1 if change==0 and choice==car: TimesCar=TimesCar+1 print("***********") for i in range (TIMES): major() print("{}次随机实验中,选手更换选择{}次,共得到汽车{}次,更换选择之后得到汽车{}次".format(TIMES,TimesChange,TimesCar,TimesChangeCar))