蒙特霍尔问题是一个源自博弈论的数学游戏问题,大致出自的电视游戏节目“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
===================================================================================================