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