经典问题:三选一,系统排除一个未中奖选项,更换选择会增加中奖概率么?
经典问题:现有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)
学无涯,思无域,行无疆