PythonTip >> 博文 >> python

Python实现蒙提霍尔问题

zihua 2014-03-08 15:03:01 点击: 908 | 收藏


为了体现专业,我在标题处用了一个高端大气上档次的英文名字来描述此问题,实际上这个问题有个土鳖名字,叫羊车问题或者三门问题。

像我这种博学多识的高科技人才,长这么大还是头次听说这么高深的问题。所以为了继续保持我的博学多识,我决定深入研究下。

最近的python课上,老师提出用python还原三门问题。并探讨下“选择换门”还是“坚持选择”的概率性。

先用代码实现功能:

#coding:utf-8
import random
#构建三扇门
door1 = 1
door2 = 2
door3 = 3
#构建门后的车

car = random . randint ( 1 , 3 )

#开挂。。提示车子在哪扇门后面

#print "car is in the door"+str(car)

#输入一扇门对应的数字

pick1 = raw_input ( "please pick one of the doors: " )

pick1 = int ( pick1 )

#按照原版的孟缇霍尔问题,第一次不论你选择对还是错,主持人都会按照套路出牌:“你确定吗?真的不改了吗?你他妈为何这么自信?!”

#if pick1 == car:

# print "you got the car!"

#不管你第一次选择对错,主持人都会给你打开一扇错误的门,然后让你二选一

#else:
while 1 :

kick1 = random . randint ( 1 , 3 )

kick1 = int ( kick1 )

if kick1 != car and kick1 != pick1 :

print "now kick a sheep door:door" + str ( kick1 ) + ",please try again"

pick2 = raw_input ( ": " )

pick2 = int ( pick2 )

if pick2 == car :

print "you got the car finally!"

break
else :

print "you got wrong!"

break

此后我在这个程序的基础上做了修改,分别自动执行100遍两种选择,并记录结果。统计如下:

下载
太自信的结果,100次只猜中了29次,猜错71次。

下载 (1)
有些时候主持人还是靠谱的,中奖率66%。

过后的几天我把这个问题分享给公司同事,在没经过用心思考的情况下(其实没差,我相信他们用不用心都答不对的- -),他们几乎都觉得两种结果应该都是50%的猜中概率,只有数值策划,他想了一会说概率应该不一样。而且和我讲什么几率论(够了我根本听不懂。。

后来我用自己的理解,解释了一下为什么概率是1/3和2/3。不一定对,但是我觉得很容易理解:

A,B,C三个门,第一次任意选,选中的概率是1/3,这一步是毋庸置疑的。

如果我们选择A,中奖概率是1/3
假如我们把B和C看做一个整体‘BC’,那么‘BC’的中奖概率是2/3,主持人剔除一个错误的答案,前提是他不会剔除你选择的那个门,其实就是帮我们把B和C变成了一个整体,这样,A的概率还是1/3,转而选择‘BC’,则概率为2/3。

通过一步步的深入研究,我发现这个问题在一部based on a true story电影《决胜21点》中也有提及,说来惭愧,对于一个在棋牌游戏公司打工的人来说,我对这种数学概率论知识近乎残障。。所以我决定开始恶补数学,请问哪能下载《决胜21点》?

延伸阅读:

1.据说全世界智商最高的女人—Marilyn vos Savant,在她的杂志专栏中声称三门问题中选择更换后猜中的概率更高。结果在美国引发了各种专家学者的声讨:人们寄来了数千封抱怨信,很多寄信人是科学老师或学者。一位来自佛罗里达大学的 读者写道:“这个国家已经有够多的数学文盲了,我们不想再有个世界上智商最高的人来充数!真让人羞愧!”另一个人写道:“我看你就是那只山羊!”美国陆军 研究所的埃弗雷特·哈曼写道,“如果连博士都要出错,我看这个国家马上要陷入严重的麻烦了。”

2.如“英特尔芯片”神准算牌能力的华裔“赌圣”—马恺文(Jeff Ma),《决胜21点》这部电影就是根据他的故事改编。

Python 的详细介绍 :请点这里
Python 的下载地址 :请点这里

原文链接:http://www.tuicool.com/articles/ymmYf2V

作者:zihua | 分类: python | 标签: python | 阅读: 908 | 发布于: 2014-03-08 15时 |