zoukankan      html  css  js  c++  java
  • Monty 大厅问题(Monty Hall Problem)也称作三门问题,出自美国大型游戏节目 Let's Make a Deal。

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

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

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

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

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

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

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

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

    使用java 代码测试:

     1 package hell;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 import java.util.Random;
     6 
     7 public class Main {
     8     static Random random = new Random();
     9     public static void test(long times) {
    10         long cHit=0,uncHit=0;
    11         
    12         for(long i=0;i<times;++i) {
    13             int p=random.nextInt(3);
    14             int t=random.nextInt(3);
    15             if(t==0) {
    16                 if(p==0) {
    17                     ++uncHit;
    18                 }else {
    19                     ++cHit;
    20                 }
    21             }else if(t==1) {
    22                 if(p==1) {
    23                     ++uncHit;
    24                 }else {
    25                     ++cHit;
    26                 }
    27             }else if(t==2) {
    28                 if(p==2) {
    29                     ++uncHit;
    30                 }else {
    31                     ++cHit;
    32                 }
    33             }
    34         }
    35         System.out.println("交换:"+(double)cHit/times);
    36         System.out.println("不交换:"+(double)uncHit/times);
    37     }
    38     
    39     public static void main(String[] args) {
    40         System.out.println("1e4");
    41         test((long)1e4);
    42         System.out.println("1e6");
    43         test((long)1e6);
    44         System.out.println("1e8");
    45         test((long)1e8);
    46         System.out.println("1e12");
    47         test((long)1e12);
    48     }
    49     
    50 
    51 }

    结果为:

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

    【点赞、关注、评论三连生活更美好】
  • 相关阅读:
    JS中的constructor、prototype、__proto__的要点理解
    call、apply、bind的源码模拟
    js中的继承方式
    IPV6
    java8 instant localDateTime
    FileInputFormat 的实现之TextInputFormat
    Git服务器,仓库的hook监控
    Linux 开机启动图形界面,shell界面
    java操作Hbase
    Linux 下安装 storm
  • 原文地址:https://www.cnblogs.com/oldBook/p/8604777.html
Copyright © 2011-2022 走看看