蒙特霍尔问题:转不过来弯的概率

来源:互联网 发布:arm控制器和单片机 编辑:程序博客网 时间:2024/04/30 08:03

蒙特霍尔问题是一个源自博弈论的数学游戏问题,大致出自的电视游戏节目“Let's Make a Deal”。问题的名字来自该节目的朱出任蒙特·霍尔(Monty Hall)。 这个游戏的玩法是:参赛者会看见三扇关闭了的门,其中一扇的后面有一辆车。随后参赛者随便选一个门,主持人会开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。这是问题来了,参赛者应不应该换?


这个问题给人最直观的感觉是不用换,因为开的门里面不是车,车肯定在1或2里面,当然每个门里面有车的概率是50%。但是这个问题的答案是应该换,而且换完之后的有车的概率是高达2/3!


这个结果确实有些不可思议,我们先用程序验证下它的正确性。

代码清单:

import java.util.Random;public class MengTeHuoEr {public static void main(String[] args) {boolean[] a = new boolean[3];//三个门Random random = new Random();int N = 10000;int count = 0;for(int i = 0; i < N; i++){//循环做N次测试for(int j = 0; j < 3; j++)a[j] = false;int indexOfCar = random.nextInt(3);//随机生成汽车位置a[indexOfCar] = true;int indexOfChoose = random.nextInt(3);//随机选择一个门int indexOfOpen;//主持人打开的门for(indexOfOpen = 0; indexOfOpen < 3; indexOfOpen++){if(indexOfOpen != indexOfCar && indexOfOpen != indexOfChoose)break;}int indexOfChange;//待交换的门for(indexOfChange = 0; indexOfChange < 3; indexOfChange++){if(indexOfChange != indexOfOpen && indexOfChange != indexOfChoose)break;}indexOfChoose = indexOfChange;if(a[indexOfChoose] == true)count++;}System.out.println(count*1.0/N);}}

输出结果:0.6633 (等于2/3)


问题出在哪里?根本原因在于如果参赛者还没有作出选择时,主持人先打开一个不是车的门,再由参赛者选择,因而意见每个门有车的概率是1/2, 而当参赛者选择一个门后,有车的概率是1/3,而当主持人打开一个不是车的门后,参赛者选的门有车的概率仍是1/3!为什么?因为在参赛者没选的两扇门中肯定至少有一辆中有羊,然后主持人打开它,所以这两扇门作为一个整体时有车的概率是2/3,当打开一个不是车的门,那么这么门有车的概率变为了0,而另一个门的概率当然是2/3了。


最后我们用严格的概率论来证明下:


证明:

设:

事件O1为参赛者不改变门最终获得车。

事件O2为参赛者改变了门最终获得车。

事件M1为参赛者开始选择的门有车。

事件M2为参赛者开始选择的门没有车。

事件M3为待交换的门有车。


因为M1,M2是互相完全独立事件,则P(M1) = 1/3, P(M2) = 2/3;

若不改变门:P(O1) = P(M1) = 1/3;

若改变门:P(M3/M1) = 0, P(M3/M2) = 1

所以由全概率公式得:P(O2) = P(M1) * P(M3/M1) + P(M2) * P(M3/M2) = 1/3 * 0 + 2/3 * 1 = 2/3.

证毕。



==================================================================================================

  作者:nash_  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址http://blog.csdn.net/nash_/article/details/8485118

===================================================================================================



原创粉丝点击