ROKR

人生何所求,致富与自由

Secondary menu

Skip to content
  • 相册|
  • 关于|
  • “遗愿清单”|
You are here: Home / Python实现蒙提霍尔问题

Python实现蒙提霍尔问题

Published on 2013 年 11 月 24 日 by rokr

为了体现专(zhuang)业(bi),我在标题处用了一个高端大气上档次的英文名字来描述此问题,实际上这个问题有个土鳖名字,叫羊车问题或者三门问题。
像我这种博学多识的睾科技人才,长这么大还是头次听说这么低(gao)级(shen)的问题。所以为了继续保持我的博学多识,我决定深入研究下。

先用代码实现功能:

#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次。。

有些时候主持人还是靠谱的。。中奖率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点》这部电影就是根据他的故事改编。

Posted in Python | Tagged Python

Post navigation

← Firefall clip01 MySQL 加锁处理分析 →

2 Responses

  1. jaward说道:
    2014 年 3 月 6 日 上午 1:21

    哈哈这个问题有意思,有点像物理上的错觉。

    其实直接判断pick和car就可以了。相同为wrong,不同为bingo.

    电影推荐到人人影视或者simplecd.me下载。

    回复
  2. Melati说道:
    2017 年 12 月 1 日 下午 2:40

    Python is really a giant powerful programming

    回复

Leave a Reply Click here to cancel reply.

新浪微博QQ账号Github

Copyright © 2021 ROKR.

Powered by WordPress and ROKR.