三门问题

dahu的菜园子 dahu的菜园子     2022-08-28     167

关键词:

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

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

 









montyhallproblem(三门问题)

...,没怎么写程序...今天突然想起以前看到过的一个问题-三门问题,十分想用程序来模拟一下,于是实在忍不住了就模拟了这个游戏的实验,通过写程序更加加深了我对这个问题的理解,期间也查找了各种相关资料进行了更深的... 查看详情

关于三门问题的代码实现

首先附三门问题题目和连接https://baike.baidu.com/item/%E4%B8%89%E9%97%A8%E9%97%AE%E9%A2%98/1242689?fr=aladdin其次根据题目需求,代码实现,这里用的是java1publicstaticvoidmain(String[]args){2Randomr=newRandom();34intno=0;5intyes=0;6int 查看详情

三门问题

近期公司培训讲到了三门问题。题目这样:这个游戏的玩法是:参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门就可以赢得该汽车,而另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇... 查看详情

反直觉的三门问题,80%的人都会错?

...:徐晟来源:大数据DT(ID:hzdashuju)三门问题,又称蒙提霍尔问题,出自20世纪美国电视节目《让我们做笔交易》中主持人蒙提霍尔提出的一个问题。这个 查看详情

matlab基础语法之蒙特卡罗模拟_2(三门问题)

%% 蒙特卡罗用于模拟三门问题clear;clc%%(1)预备知识%randi([a,b],m,n)函数可在指定区间[a,b]内随机取出大小为m*n的整数矩阵randi([1,5],5,8)%在区间[1,5]内随机取出大小为5*8的整数矩阵%   2  5  4  5  3  1  4  2%   3  3 ... 查看详情

matlab基础语法之蒙特卡罗模拟_2(三门问题)

%% 蒙特卡罗用于模拟三门问题clear;clc%%(1)预备知识%randi([a,b],m,n)函数可在指定区间[a,b]内随机取出大小为m*n的整数矩阵randi([1,5],5,8)%在区间[1,5]内随机取出大小为5*8的整数矩阵%   2  5  4  5  3  1  4  2%   3  3 ... 查看详情

弄懂“三门问题”,成功概率翻倍,来用代码验证一下(代码片段)

看到一段关于“三门问题”的视频,第一感觉就是视频的结论有误。本想一笑了之,但看了评论,迷惑了:三门问题的答案到底是什么?作为勤学好问的码农,不知道最终答案,还是很难受的,于... 查看详情

三门问题

先验:p(y1)=p(y2)=p(y3)=1/3,1,2,3门有车的概率p(k2|y1)=1/21门有车,开2门的概率p(k2|y2)=02门有车,开2门的概率p(k2|y3)=13门有车,开2门的概率推倒:p(y1|k2)=(dfracp(k2|y1)p(y1)p(k2))=(frac1/2*1/31/2)=1/3=p(y1)其中:p(k2)=p(k2|y1)p(y1)+p(k2|y2)p(y2)+p(k2|y3)... 查看详情

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

  三门问题很有意思,wiki用不同方法将原理讲的很透彻了,我跟喜欢其中这种理解方式:无论参赛者开始的选择如何,在被主持人问到是否更换时都选择更换。如果参赛者先选中山羊,换之后百分之百赢;如果参赛者先选中... 查看详情

三门问题作业(代码片段)

题目描述:有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。1... 查看详情

不知道该学那一个语言?一文带你了解三门语言

名字:阿玥的小东东学习:Python。正在学习c++主页:阿玥的小东东目录粉丝留言,回答问题1.首先,初步了解  查看详情

直觉与概率

...。你有多相信自己的直觉?或者说什么时候该相信直觉?三门问题谈及直觉,不得不说一个著名的故事——三门问题。“三门问题”的描述如下:假设你正在参加一个游戏节目,你被要求在三扇门中选择一扇:其中一扇后面有一... 查看详情

对于coursera上三门北大网课的评测

今年暑假开始就选了coursera上三门北大的网课——C++程序设计、算法基础、数据结构基础,它们属于一个项目的,上的话每个月249块钱,项目里包括这三门一共有七门课。因为一开始是三门课同时上的,数据结构和算法基础给的... 查看详情

mysql查询三门科目90分以上的学生的所有成绩

...张三89物理李四98语文李四78数学.........一条SQL语句查询出三门科目都90分以上的学生,大侠们帮帮忙!比方查 student 表,其中有三个字段select name from student where grade>90 group by name having&nb... 查看详情

2020最新krenzk大三门课程色彩透视构成分享(代码片段)

krenz的网课,透视与结构、动态与构成、色彩与光影 赠送人体结构教程+psd+k大笔刷 完整版地址:点击我 =========================================================================================================1、生成资源servie.yaml1.1、yaml 查看详情

剑网三门派诗词

听歌听到一句“尽诸宵小天策义”,没玩过剑网三,却感叹于里面的每一个故事,然后就是找到了各个门派的诗词。 少林古刹紫竹禅钟鸣,降妖伏魔江湖行。佛音亦有豪情意,天下武功出少林。万花春兰秋菊夏清风,三星望... 查看详情

小峰视频八:逻辑运算符关系运算符三门运算符

一、逻辑运算符publicclassdemo007 publicstaticvoidmain(String[]args) //&&与前后两个操作数必须都是true才返回ture,否则返回false booleanb1=(5<3)&&(4>5); System.out.println("b1="+b1); //&不短路与 bool 查看详情

学生成绩管理(代码片段)

有N个学生,每个学生的数据包括学号、班级、姓名、三门课成绩。从键盘输入N个学生数据,要求打印出每个学生三门课的平均成绩,以及平均分最高分学生数据(包括学号、班级、姓名、三门课成绩,平均分)。要求:1、定义... 查看详情