Python实现蒙提霍尔问题


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

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

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

先用代码实现功能:

#coding:utf-8 importrandom   #构建三扇门 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: while1: kick1=random.randint(1,3) kick1=int(kick1) ifkick1!=car andkick1!=pick1: print"now kick a sheep door:door"+str(kick1)+",please try again"   pick2=raw_input(": ") pick2=int(pick2) ifpick2==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 B C
1/3 1/3 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 的下载地址:请点这里

推荐阅读:

《Python开发技术详解》.( 周伟,宗杰).[高清PDF扫描版+随书视频+代码]

Python脚本获取Linux系统信息

相关内容