三门问题

近期公司培训讲到了三门问题。题目这样:

这个游戏的玩法是:参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门就可以赢得该汽车,而另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人会开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机会率?如果严格按照上述的条件的话,答案是会—换门的话,赢得汽车的机会率是 2/3。

  这条问题亦被叫做蒙提霍尔悖论:虽然该问题的答案在逻辑上并不自相矛盾,但十分违反直觉。这问题曾引起一阵热烈的讨论。

这里按 古典方法,概率空间方法,和编程方法 都走一遍

1.古典方法

3个门中,1个门后面有汽车,其他2个门后面有山羊,共有3处等可能的情况。如果坚持选择门1不换,如下表所示,只有第一种情况下可以获得汽车,而第二种与第三种情况下都得到山羊。因此,得到汽车的概率是1/3。

 门1  门2  门3 坚持选择门1的结果
 汽车  山羊  山羊  得到汽车
 山羊  汽车  山羊  得到山羊
 山羊  山羊  汽车  得到山羊

  如果获胜者选择门1,当主持人打开门2或门3中有山羊的一扇门后,他在剩下的门中选择一个,就会出现下表所示的结果。

 门1  门2  门3  获胜者的选择 重新选择的结果
 汽车  山羊  山羊  门1换为门2或门3  得到山羊
 山羊  汽车  山羊  门1换为门2  得到汽车
 山羊  山羊  汽车  门1换为门3  得到汽车

  可以看到,重新选择另一扇门,得到汽车的概率将会变成2/3。因此,重新选择更有利。

拓展:100个门呢?

如果你拒绝改变,你只有在一开始就选择了正确的门的情况下才能获取汽车,这个概率只有1%。在另外99%的情况下,你最初选择的是一个后面是山羊的门,而另外的98扇已经打开,你这时改变最初的选择就可以成功。所以,在99%的概率下,改变选择是正确的。

2.概率空间

对于概率问题来说,只要能把问题的概率空间构造出来,那么理论上所有相关的概率问题都可以解决掉。三门问题里涉及4个概率空间,然后要用概率转移函数的办法才能把这4个空间构造成一个整体的概率空间。如果把三门问题写清楚,其实概率转移函数也就学的差不多了。
4个概率空间:
第一个其中其中代表车在第个门里。
第二个其中 其中代表人选了第个门。
第三个其中其中代表主持人去掉第个门。
第四个其中其中代表主持人去掉某个门后车在第个门。
第一个概率转移函数根据游戏规则,为若车在人选了主持人去掉的概率。
第二个转移函数就是如果相等就取1否则取0。
然后用概率转移函数的办法建立乘积空间,这个乘积空间就是我们要的三门问题的概率空间。
三门问题中不换门而选中的概率是个条件概率,已知选了门,主持人去掉门的情况下车在门的概率用Lebesgue积分计算如下:,而所以最后的概率是1/3

3.python编程模拟

#!/usr/bin/python
#coding=utf-8
#__author__=‘dahu‘
#三门问题
import random   #伪随机性
from random import SystemRandom     #真随机
N=3
change =True  #false就是不换,true就是换
Total = 10000
cunt=0
for i in xrange(Total):
    car =SystemRandom().randrange(1,N+1)
    first_choose=SystemRandom().randrange(1,N+1)
    if first_choose==car:   #如果一开始就猜对了,则主持人选完后剩下的那个,就是随便留一个
        lefted=(car + 1)%N+1
    else:                   #如果一开始猜错了,剩下的那个只能留汽车了
        lefted=car
    last_choose=lefted if change else first_choose
    cunt += (last_choose == car)
ss=[‘不换‘,‘换‘]
print ‘换不换?\t%s\n正确率:%f\n‘%(ss[change], 1.0*cunt/Total)
/usr/bin/python2.7 /home/dahu/My_tools/change_or_not.py
换不换?    换
正确率:0.657400

Process finished with exit code 0

我们这里用编程模拟下100个门的情况:修改参数N=100,答案很显然。

/usr/bin/python2.7 /home/dahu/My_tools/change_or_not.py
换不换?    换
正确率:0.990090

Process finished with exit code 0

结论:

还是得换,换的概率是2/3

时间: 2024-10-23 06:40:55

三门问题的相关文章

有五个学生,每个学生有3门课(语文、数学、英语)的成绩, * 写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩)

/* * 3. 有五个学生,每个学生有3门课(语文.数学.英语)的成绩, * 写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩), * 然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中. * 要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息 * */ import java.io.*; import java.util.*; public class Test3 { publi

又见蒙特卡洛——python模拟解决三门问题

三门问题很有意思,wiki用不同方法将原理讲的很透彻了,我跟喜欢其中这种理解方式:无论参赛者开始的选择如何,在被主持人问到是否更换时都选择更换.如果参赛者先选中山羊,换之后百分之百赢:如果参赛者先选中汽车,换之后百分之百输.而选中山羊的概率是2/3,选中汽车的概率是1/3.所以不管怎样都换,相对最初的赢得汽车仅为1/3的机率来说,转换选择可以增加赢的机会. 原理明白了,实现就比较简单了,这次用python啦. import random as rnd strategy = ['stick','c

【C语言】有n个结构体变量,内含学生号, 姓名和三门课成绩。要求输出平均成绩最高学生的信息。

//有n个结构体变量,内含学生号, 姓名和三门课成绩.要求输出平均成绩最高学生的信息. #include <stdio.h> #define N 3 struct Student { int num; char name[20]; float socre[3]; float aver; }; void input(struct Student stu[]) { int i; printf("Çë·Ö±ðÊäÈë¸÷ѧÉúµÄÐÅÏ¢£ºÑ§ºÅ£¬ÐÕÃû£¬ÈýÃſγɼ¨\

蒙提-霍尔悖论(三门问题)终极分析

三门问题——亦称为蒙提霍尔问题,出自美国的电视游戏节目Let's Make a Deal.问题的名字来自该节目的主持人蒙提·霍尔(Monty Hall)[2].问题是这样的: 参赛者面前有三扇关闭着的门,其中一扇的后面是一辆汽车,选中后面有车的那扇门就可以赢得该汽车,而另外两扇门后面则各藏有一只山羊.当参赛者选定了一扇门,但未去开启它的时候,主持人会开启剩下两扇门中的一扇,露出其中一只山羊.主持人其后会问参赛者要不要更换选择,选另一扇仍然关着的门. 据说此节目一经播出就引起了一场热烈的讨论,有人

关于三门问题的代码实现

首先附三门问题题目和连接https://baike.baidu.com/item/%E4%B8%89%E9%97%A8%E9%97%AE%E9%A2%98/1242689?fr=aladdin 其次根据题目需求,代码实现,这里用的是java 1 public static void main(String[] args) { 2 Random r = new Random(); 3 4 int no=0; 5 int yes = 0; 6 int doors = 3; 7 int playCou

三门问题,得出答案只要证明这几个例子逻辑等价就行了

最近在看离散数学,又看到这让人纠结的三门问题.想到其实把这个问题用第一章的逻辑与证明的知识把这个问题简化几次就根本没人会纠结了. 例1:两个人完抽牌游戏.游戏规则这样的,一共三张牌,里面有一张王牌,两张普通牌,甲先抽一张,乙抽两张.   请问:甲,乙抽到王牌的几率是多少.  我想,没人会纠结吧.甲,三分之一,乙,三分之二. 稍微复杂化一下,其实只是绕个圈子. 例2:两个人完抽牌游戏.游戏规则这样的,一共三张牌,里面有一张王牌,两张普通牌,甲先抽一张,乙抽两张,然后乙丢掉了一张牌(此牌不是王牌).

采用绝缘导线穿刺线夹的带电作业法在三门挂网运行

5月15日,在三门县西区琴江524线18#杆线上,供电公司运维部工作人员正采用绝缘操作杆在架空绝缘导线上进行首次间接带电作业.1个小时的时间里,他们顺利完成安装了新型绝缘导线穿刺线夹的任务,并在配电线路上挂网运行,这也是省内首次采用该新工艺安装. 此项工作由台州市供电公司运维部牵头,组织三门供电公司.临海供电公司.黄岩供电公司及厂家有关技术人员,作为供电部门2014年科技实施项目.之前用绝缘操作杆的间接带电作业法仅能在架空裸导线上进行,本次用新型穿刺线夹采用操作杆操作工艺比较复杂,工作难度大,操

反直觉的一个游戏 - 三门问题 (Monty Hall problem)

三门问题,也叫蒙提霍尔问题(Monty Hall Problem) 以电视节目 - Let's make a deal的主持人蒙提霍命名的一个反直觉问题. 游戏简介 假设有3个门. 其中一个后面藏着宝藏,其余2个都是空门(美国节目中1个后面有汽车,其余的2个是山羊). 游戏开始: 首先你先选择一张门, 选好后,主持人帮你在其余2扇没有被选择的门中打开一扇没奖的门. 这时候你有一个选择权, 换门还是不换门? 直觉上换不换几率都是50%,那到底几率是多少? 换是不是得奖的机会大一些? 可以用代码来模

有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件

* 题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件 public class 第五十题保存学生成绩 { public static void main(String[] args) throws IOException { //保存学生成绩到文件stud中 int stuId = 0; //学号 String stuName = null;//姓名 int grade1 = 0;//第一门