羊车门问题python模拟
题目描述:有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。
作业要求如下,需在博文中回答如下问题,回答问题时,先复制题目,然后再换行书写答案:
1、按照你的第一感觉回答,你觉得不换选择能有更高的几率获得汽车,还是换选择能有更高的几率获得汽车?或几率没有发生变化?
答:我感觉和买彩票是否中将一样,几率都是三分之一,没变化。
2、请自己认真分析一下“不换选择能有更高的几率获得汽车,还是换选择能有更高的几率获得汽车?或几率没有发生变化?” 写出你分析的思路和结果。
答:换 得🚗的几率更高。采用穷举法。假设有🐏1,🐏2,🚗。如果不换,中🚗的概率是三分之一。如果换,假设我们第一次选中的是🚗,剩下的是🐏1🐏2,主持人开一扇🐏门,我们换会得到🐏2;假设我们第一次选中的是🐏1,剩下🐏2,🚗,主持人开一扇🐏门,我们必定会换得🚗;假设我们第一次选到🐏2,情况与选到🐏1一样,所以,如果换的话,我们得🚗 的概率是三分之二。
3、请设法编写程序验证自己的想法,验证的结果支持了你的分析结果,还是没有支持你的分析结果,请写出程序运行结果,以及其是否支持你的分析。(提示:可以借助随机数函数完成此程序)
答:程序运行结果如图所示,结果支持我的分析。
4、请附上你的代码。(提示:使用编辑器中的插入代码功能,将代码显示为 Python 风格)
代码如下:
1 # -*- coding: utf-8 -*- 2 """ 3 Created on Wed Nov 14 09:18:45 2018 4 5 @author: kk 6 """ 7 8 def unchange(car,choice): 9 if car==choice: 10 return 1; 11 else: 12 return 0; 13 def change(car,choice): 14 if choice==car: 15 return 0; 16 else: 17 return 1; 18 19 20 import random 21 sum1=sum2=0; 22 a=[1,2,3] 23 for i in range(0,10000): 24 car=random.choice(a) 25 choice=random.choice(a) 26 if unchange(car,choice): 27 sum1=sum1+1 28 if change(car,choice): 29 sum2=sum2+1 30 print('共进行了10000次随机测试,结果如下:') 31 print('选择不换时,得车的次数为{},概率为{}'.format(sum1,sum1/10000)) 32 print('选择换时,得车的次数为{},概率为{}'.format(sum2,sum2/10000))