标签:变化 程序 编辑 随机数 style print class 主持人 code
有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。
请问:
1、按照你的第一感觉回答,你觉得不换选择能有更高的几率获得汽车,还是换选择能有更高的几率获得汽车?或几率没有发生变化?
答:不换选择能有更高几率获得汽车
2、请自己认真分析一下“不换选择能有更高的几率获得汽车,还是换选择能有更高的几率获得汽车?或几率没有发生变化?” 写出你分析的思路和结果。
答:设羊1,羊2,车3,
不换选择,success0=1/3
换选择,当第一次选择1或2,公布一只羊后,一旦更换,就是汽车,success1=2/3;当第一次选车,公布一只羊后,一旦更换,就是羊,失败。
3、请设法编写程序验证自己的想法,验证的结果支持了你的分析结果,还是没有支持你的分析结果,请写出结果。(提示:可以借助随机数函数完成此程序)
答:1参赛者决定不更换选择:
此时成功概率为0.3333333333333333
2参赛者决定更换选择:
此时成功概率为0.66685
3参赛者犹豫是否更换选择:
此时成功概率为0.50208
所以当更换选择时,有更高几率
4、请附上你的代码。(提示:使用编辑器中的插入代码功能,将代码显示为 Python 风格)
代码如下:
1 #其中羊1,羊2,汽车对应的门号为1,2,3;更换选择的结果success1,success2,1/3比较。 2 from random import * 3 i,j=1,1 4 seq1=[1,2,3] 5 seq2=[1,2] 6 seq3=[2,3] 7 seq4=[1,3] 8 #情况1 9 print("1参赛者决定不更换选择:") 10 print("此时成功概率为{}". format(1/3)) 11 #情况2 12 print("2参赛者决定更换选择:") 13 while i<100001: 14 a=choice(seq1) 15 if a==1: 16 a=3 17 elif a==2: 18 a=3 19 else : 20 zhuchi=choice(seq2) 21 if zhuchi==1: 22 a=2 23 else : 24 a=1 25 i+=1 26 if a==3: 27 j+=1 28 success1=j/100000 29 print("此时成功概率为{}". format(success1)) 30 #情况3 31 i,j=1,1 32 print("3参赛者犹豫是否更换选择:") 33 while i<100001: 34 a=choice(seq1) 35 if a==1: 36 a=choice(seq3) 37 elif a==2: 38 a=choice(seq4) 39 else : 40 zhuchi=choice(seq2) 41 if zhuchi==1: 42 a=choice(seq3) 43 else : 44 a=choice(seq4) 45 i+=1 46 if a==3: 47 j+=1 48 success2=j/100000 49 print("此时成功概率为{}". format(success2))
50 if success1<1/3: 51 if success2<1/3: 52 print("所以当不更换选择,有更高几率") 53 else : 54 print("所以当犹豫是否更换选择,有更高几率") 55 else: 56 if success2<success1: 57 print("所以当更换选择时,有更高几率") 58 else: 59 print("所以当犹豫是否更换选择,有更高几率")
标签:变化 程序 编辑 随机数 style print class 主持人 code
原文地址:http://www.cnblogs.com/20161704020ww/p/7668161.html