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(没跑出来)

    【点赞、关注、评论三连生活更美好】
  • 相关阅读:
    npm install 报错 error Unexpected end of JSON input while parsing near '...sShrinkwrap":false,"d' 解决办法
    Vue父组件如何调用子组件(弹出框)中的方法的问题
    jquery radio的操作
    MYSQL 在当前时间加上或减去一个时间段
    jenkins 相关默认信息
    springboot中@webfilter注解的filter时注入bean都是null
    srpingboot2 session过期时间设置
    springboot 以jar方式在linux后台运行
    Java获取当前运行方法所在的类和方法名
    IntelliJ IDEA中Java类注释
  • 原文地址:https://www.cnblogs.com/oldBook/p/8604777.html
Copyright © 2011-2022 走看看