现有一概率问题:一个家庭有两个孩子,其中一个是男孩,问另一个也是男孩的概率。
很多人认为是1/2,很不幸这个答案是错误的,下面是这个问题的解决代码,可以看到应该是1/3。
//一个家庭有两个孩子,其中一个是男孩,问另一个也是男孩的概率 public static void main(String[] args) { int son = 0; int mother = 0; //这里有10000000个家庭 for(int i = 0; i < 10000000; i++){ int a=(int)(Math.random()*2); int b=(int)(Math.random()*2); //我们不知道应该先判断a还是先判断b.那么接下来就写个代码平分下概率。 //在这个分支结束的概率是1/2 if(a == 0) { mother++; if(b == 0) { //1/4可以到这里 son ++; } //禅机在此 continue; } //走到这里的概率是1/2 if(b == 0) { //1/4进入这里 mother++; if(a == 0) { //此处必不进 son ++; } }else { //这个分支的概率是1/4,但是能走到这说明a和b都不是男孩,与题设“其中一个是男孩”产生矛盾,故不在本题的讨论范围内
//此留白给大家感悟。
} } System.out.println(son); System.out.println(mother); }
运行结果为:
2499680
7498713
此中有禅机,欲辩已忘言。
易三直©版权所有