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

    【点赞、关注、评论三连生活更美好】
  • 相关阅读:
    ADB命令大全
    Backup your Android without root or custom recovery -- adb backup
    Content portal for Pocketables Tasker articles
    Is there a way to detect if call is in progress? Phone Event
    Tasker to proximity screen off
    Tasker to detect application running in background
    Tasker to create toggle widget for ES ftp service -- Send Intent
    Tasker to proximity screen on
    Tasker to answer incoming call by pressing power button
    Tasker to stop Poweramp control for the headset while there is an incoming SMS
  • 原文地址:https://www.cnblogs.com/oldBook/p/8604777.html
Copyright © 2011-2022 走看看