问题如下: 有三个盒子,其中一个里面是两个红球,一个里面是两个蓝球,一个里面一红球一蓝球。小明从一个盒子取出一个球,发现是个红球,请问,这个盒子里另外一个球也是红球的概率是多少?

这个问题是在抖音上看到的,下面的comments评论为了答案吵翻了天。一种观点认为,剩下另一个球要么是红球要么是蓝球,两个概率一样,所以结果是50%;另一种观点认为比50%大。先不说答案。作为程序员,最简单暴力的方式就是用数据模拟一下,看看是多少。下面是模拟程序:

import java.util.Random;  
  
public class P {  
    final static int[][] BOX = {      
            {0, 0},  
            {0, 1},  
            {1, 1}   
    };  
      
    public static void main(String[] args) {  
        Random r = new Random();   
        int touchBox;   // which box to fetch  

        int touchBall;  // which ball to fetch  

        int touchTimes = 10000000;        
        int firstTouchRed = 0;   
        int anotherIsAlsoRed = 0;  
          
        for(int i=0; i< touchTimes; i++) {  
            touchBox = r.nextInt(3);    //index: 0, 1, 2  

            touchBall = r.nextInt(2);   //index: 0, 1  


            // Xiaoming picked up a ball and it is Red(0)    

            if (BOX[touchBox][touchBall] == 0) {    
                firstTouchRed ++;   
                int another = touchBall == 0? 1:0;   
  
                if (BOX[touchBox][another] == 0) {  // another ball is also Red  

                    anotherIsAlsoRed ++;  
                }  
            }  
        }  
        System.out.println("第一次拿出的是红球的次数:" + firstTouchRed);  
        System.out.println("第二次拿出的刚好也是红球的次数:" + anotherIsAlsoRed);  
        System.out.println("P = " + (anotherIsAlsoRed * 1.0 / firstTouchRed));   
    }  
}  
 

运行结果:

第一次拿出的是红球的次数:4996935
第二次拿出的刚好也是红球的次数:3331421
P = 0.6666928827371178 = 2/3

这个概率为什么会比1/2大呢?就是因为小明在第一次选的时候,他从2个红球盒子里拿到红球概率明显高于从1红1蓝盒子里拿到红球概率。或者这样说,既然第一次拿到的是红球,那么可以先排除两个球都是蓝色的那个盒子,既然第一次拿到的是红球,那就是说从2个盒子中的3个红球里拿出了一个红球,排除拿出蓝球的那些次数。这个问题变成了:2个盒子,其中A里面是2个红球,B里面是1个红球,小明随机拿出一个红球,他拿的是哪个盒子?概率多大?很明显,从A里面拿的概率是2/3, 从B里拿的概率是1/3.