蒙特霍尔问题:转不过来弯的概率
来源:互联网 发布:windows.old 编辑:程序博客网 时间:2024/04/30 13:08
蒙特霍尔问题是一个源自博弈论的数学游戏问题,大致出自的电视游戏节目“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
===================================================================================================
- 蒙特霍尔问题:转不过来弯的概率
- 蒙特霍尔问题:转不过来弯的概率
- 蒙特霍尔问题与我那餐盒饭
- 蒙提霍尔问题的理解
- 蒙提霍尔问题
- 蒙提霍尔问题
- 蒙提霍尔问题
- 蒙提霍尔问题
- 蒙提霍尔问题
- 蒙提霍尔三门问题
- 蒙提霍尔问题-三扇门
- 蒙提霍尔问题&箱子问题
- 三门问题(蒙提霍尔问题)
- 拦截器参数传不过来问题
- 蒙提霍尔问题(三门问题)程序
- 坚强,时真的适应不过来
- gettext编译不过的问题
- Gdi+ 编译不过的问题
- android开发——布局简介
- 基于覆盖率的精准测试
- uva662 - Fast Food(递推)
- C语言实践总结
- 黑马程序员--2014年最值得学习的编程语言 Java居首
- 蒙特霍尔问题:转不过来弯的概率
- Qt生成动/静态链接库的*.pro文件设置
- hadoop-hbase配置
- 从零开始学android<Dialog对话框.二十五.>
- 如何判断一个数为无符号数还是有符号数
- C 语音 位运算详解
- brainfuck language
- nginx模块开发--定时器的使用
- 网络流基础及最大流算法