Monty 大厅的问题陈述十分简单,但是它的答案看上去却是有悖常理。该问题不仅引起过很多争议,也经常出现在各种考试题中。

Monty 大厅的游戏规则是这样的,如果你来参加这个节目,那么

(1)Monty 想你示意三个关闭的大门,然后告诉你每个门后面都有一个奖品,其中有一个门后面的奖品是一辆车,另外两个门后面则是不值钱的奖品,例如指甲剪之类的东西。奖品是随机放在三个门后面的;

(2)该游戏的目的是猜中哪个门后面有车,一旦猜中,你就可以拿走汽车;

(3)你先挑选一个门,不妨假设为门 A,其他两个门称为门 B 和 门 C;

(4)再打开你选中的门之前,Monty 会先打开 B 或者 C 中一个没有车的门来增加悬念(如果汽车在门 A 后面,那么 Monty 打开门 B 或者门 C 都是安全的,所以他可以随意选择一个;如果汽车在门 B 后面,那么 Monty 只能够选择门 C)

(5)然后 Monty 给你一个选择,坚持最初的选择还是换到另外一个没有打开的门?

此刻,问题已经抛出来了,是坚持初心还是临时改变?两者之间有没有什么区别?

使用java 代码测试:

 package hell;

 import java.util.ArrayList;
import java.util.List;
import java.util.Random; public class Main {
static Random random = new Random();
public static void test(long times) {
long cHit=0,uncHit=0; for(long i=0;i<times;++i) {
int p=random.nextInt(3);
int t=random.nextInt(3);
if(t==0) {
if(p==0) {
++uncHit;
}else {
++cHit;
}
}else if(t==1) {
if(p==1) {
++uncHit;
}else {
++cHit;
}
}else if(t==2) {
if(p==2) {
++uncHit;
}else {
++cHit;
}
}
}
System.out.println("交换:"+(double)cHit/times);
System.out.println("不交换:"+(double)uncHit/times);
} public static void main(String[] args) {
System.out.println("1e4");
test((long)1e4);
System.out.println("1e6");
test((long)1e6);
System.out.println("1e8");
test((long)1e8);
System.out.println("1e12");
test((long)1e12);
} }

结果为:

1e4
交换:0.6677
不交换:0.3323
1e6
交换:0.66652
不交换:0.33348
1e8
交换:0.66670149
不交换:0.33329851
1e12(没跑出来)

Monty 大厅问题(Monty Hall Problem)也称作三门问题,出自美国大型游戏节目 Let's Make a Deal。的更多相关文章

  1. 羊和汽车问题(或s三门问题(Monty Hall problem)亦称为蒙提霍尔问题)

    三门问题(Monty Hall problem)亦称为蒙提霍尔问题.蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目Let's Make a Deal.问题名字来自该节目的主持人蒙提·霍尔(Mon ...

  2. The Monty Hall Problem

    GNG1106 Lab 3The Monty Hall ProblemBackgroundThe Monty Hall Problem is a famous probability puzzle, ...

  3. 用贝叶斯定理解决三门问题并用Python进行模拟(Bayes' Rule Monty Hall Problem Simulation Python)

    三门问题(Monty Hall problem)也称为蒙提霍尔问题或蒙提霍尔悖论,出自美国的电视游戏节目<Let’s Make a Deal>.问题名字来自该节目的主持人蒙提·霍尔(Mon ...

  4. Monty Hall Problem (三门问题)

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

  5. zzulioj--1712--Monty Hall problem(蒙提霍尔问题)

     1721: Monty Hall problem Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 186  Solved: 71 SubmitSt ...

  6. sql server:Monty Hall problem (蒙提霍尔问题)

    --------------------------------------------------------------------- -- Auxiliry Table of Numbers 数 ...

  7. Monty Hall Problem的一个图解,感觉不错

    从Coursera.org上的台大概率课讨论组里拿来的 如果不转换,选中汽车的概率是1/3,非常显然. 但转换后选中汽车的概率变成2/3就有点反直觉了,并不是太容易想明白. 因为转换其实有4种:汽车- ...

  8. Monty Hall悖论

    Monty Hall悖论又称为蒙提·霍尔悖论.三门问题.Monty Hall是上个世纪60年代,电视游戏节目“Let's Make a Deal”的主持人,这个悖论便是以他的名字来命名的.节目的规则是 ...

  9. Monty Hall 问题与贝叶斯定理的理解

     三门问题(Monty Hall problem),是一个源自博弈论的数学游戏问题,大致出自美国的电视游戏节目Let's Make a Deal.问题的名字来自该节目的主持人蒙提·霍尔(Monty H ...

随机推荐

  1. [Nova ERROR] InternalError: Nova requires QEMU version 2.5.0 or greater.

    目录 文章目录 目录 问题 调查 解决 问题 nova-compute service 启动失败 InternalError: Nova requires QEMU version 2.5.0 or ...

  2. JS实战篇

    实现选项卡的选择: 效果图如下: 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8& ...

  3. 剑指Offer总结——重建二叉树

    /** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; ...

  4. 网格UV展开

    原文链接 UV展开是什么 参数曲面的参数域变量一般用UV字母来表达,比如参数曲面F(u,v).所以一般叫的三维曲面本质上是二维的,它所嵌入的空间是三维的.凡是能通过F(u,v)来表达的曲面都是参数曲面 ...

  5. python 迭代器(第二次总结)

    迭代器 1.先明白迭代器是什么意思 迭代:不断的取值的(器)工具 迭代器:就是一个重复的过程,每一次重复都是基于上一次的结果而来的. (单纯的重复不是迭代) 2.为什么要有迭代器 不依赖索引取值的方法 ...

  6. [转帖]中国AI芯“觉醒”的五年

    中国AI芯“觉醒”的五年 https://www.cnbeta.com/articles/tech/857863.htm 原来 海思的营收已经超过了按摩店(AMD) 没想到.. 十多款芯片问世,多起并 ...

  7. 【转帖】AMD:未向合资企业THATIC发放后续芯片设计授权

    AMD:未向合资企业THATIC发放后续芯片设计授权 https://www.cnbeta.com/articles/tech/854193.htm 海光和兆芯的CPU 都不靠谱啊. 在台北电脑展(C ...

  8. 云服务器以及linux操作系统打开防火墙,在墙上开一个小口

    在服务器运行时,需要在某个端口上开一个小口,以供外部访问 执行命令/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT 8080为端口号,需要开的 ...

  9. 网络架构,七层协议,三次握手四次挥手,socket套接字简单编程

    一.单机架构 应用领域: 植物大战僵尸 office 二.CS架构 应用领域: QQ 大型网络游戏 计算机发展初期用户去取数据,直接就去主机拿,从这里开始就分出了客户端和服务端. 客户端:用户安装的软 ...

  10. tornado源码简单实现

    首先基本的同步流程是: class Index(tornado.web.RequestHandle): def get(self): self.write('hellow,word') app = t ...