最近,在网上看到一个有趣的三门问题,遂准备用python来娱乐下。下边是三门问题的介绍。
三门问题(Monty Hall problem)亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目 Let‘s Make a Deal。问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。
参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。
问题是:换另一扇门会否增加参赛者赢得汽车的机率?
要求:
通过程序模拟三门问题,并重复进行大量测试,统计换门与不换门的情况下,赢得汽车的概率。
下边是解答的代码:
#!/usr/bin/python
#coding:utf-8
total=100000
a=b=c=d=e=f=0.00
x=0
from random import randint
list=["sheep1","sheep2","car"]
tuple=("yes","no")
while x!=total:
t=randint(0,2)
i=randint(0,1)
# print list[t],tuple[i]
if list[t]=="car":
if tuple[i]=="yes":
a+=1
else:
b+=1
elif list[t]=="sheep1":
if tuple[i]=="yes":
c+=1
else:
d+=1
elif list[t]=="sheep2":
if tuple[i]=="yes":
e+=1
else:
f+=1
x+=1
print "总次数为%d"%(total)
print "换%d" %(a+c+e),"不换%d" %(b+d+f)
print "不换赢的概率为%.2f%%"%(b/(c+b+e)*100)
print "换赢的概率为%.2f%%"%((c+e)/(c+b+e)*100)下图运行结果:
结论: 由此可以看出,换门赢的概率大约是不换赢的概率的2倍,所以换门能增加参赛者赢得汽车的概率。
本文出自 “小飞侠” 博客,谢绝转载!
原文:http://jack88.blog.51cto.com/12348665/1902857