首页 > 编程语言 > 详细

三门问题之python解答

时间:2017-03-03 14:07:17      阅读:230      评论:0      收藏:0      [点我收藏+]

  最近,在网上看到一个有趣的三门问题,遂准备用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倍,所以换门能增加参赛者赢得汽车的概率。

本文出自 “小飞侠” 博客,谢绝转载!

三门问题之python解答

原文:http://jack88.blog.51cto.com/12348665/1902857

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!