zoukankan      html  css  js  c++  java
  • 经典问题:三选一,系统排除一个未中奖选项,更换选择会增加中奖概率么?

    经典问题:现有A,B,C三个盒子,其中一个内有奖品。某人选定一个后,系统从剩余的两个中排除掉一个未中奖的盒子。此时更换选择还是坚持原来的选择,哪个会增大获奖概率

    解答:不换时中奖概率是1/3,换了之后中奖概率时2/3。初始时,ABC每个中奖的概率都是1/3,假如你选了A,那么B+C的中奖概率是2/3。假设此时系统排除了不中奖的C,则A中奖概率还是1/3,这时候用B替换B+C,则现在B中奖的概率变为2/3。所以改变选择提高中奖概率。

    代码实现:

    public class Main{
        public static void main(String[] args){ 
            int count=200;//实验次数
            System.out.println("不换测试:");
            test(count,false);
            System.out.println("更换测试:");
            test(count,true);
        }
    
        private static void test(int count, boolean index) {
            int counts=0;//中奖次数
            for(int i=1;i<=count;i++){
                int price=(int)(Math.random()*3)+1;//中奖号码为0/1/2中的一个
                int start=(int)(Math.random()*3)+1;//最初选定号码
                int end=0;//最终选定号码
                int delete=0;//选定删除的选项
                if(start==price){//开始时选中了
                    boolean b=(int)Math.random()*2==1;//b为true或false
                    switch(price){
                        case 1:{
                            delete=b?2:3;
                            break;
                        }
                        case 2:{
                            delete=b?1:3;
                            break;
                        }
                        case 3:{
                            delete=b?1:2;
                            break;
                        }
                    }
                }
                else{//开始时未选中中奖号码
                    delete=1+2+3-price-start;//排除的选项既不中奖,也不是最初的选择
                }
                
                if(index){//更换号码
                    end=1+2+3-start-delete;
                }
                else//不更换号码
                    end=start;
                
                System.out.format("第%d次选 中奖号为%d 初始选了%d 排除了%d 最终选了%d  ",i,price,start,delete,end);
                if(end==price){
                    counts++;
                    System.out.println("中奖了");
                }
                else{
                    System.out.println("未中奖");
                }
                }
            System.out.format("进行%d次测试,中奖%d次", count, counts);
            System.out.println();
        }
    }

    结果展示:

    各实验100次,最终更换选择的中奖概率接近2/3(65/100),不更换的中奖概率约为1/3(32/100)

    学无涯,思无域,行无疆
  • 相关阅读:
    Android编码规范03
    Android编码规范02
    Android编码规范01
    函数返回值类型为枚举类型
    ObjectAnimator属性动画应用demo
    n个元素的入栈顺序有多少种出栈顺序?
    JNI笔记1
    字符串——面试题1:统计一行字符中有多少个单词?
    快速排序算法
    es6之 async await 使用小计
  • 原文地址:https://www.cnblogs.com/1992hdl/p/6807605.html
Copyright © 2011-2022 走看看