zoukankan      html  css  js  c++  java
  • 代码中的禅机

    现有一概率问题:一个家庭有两个孩子,其中一个是男孩,问另一个也是男孩的概率。

    很多人认为是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

    此中有禅机,欲辩已忘言。

    转载于:https://www.cnblogs.com/liuhui2010518/p/9078029.html

  • 相关阅读:
    poj3278 Catch That Cow
    poj2251 Dungeon Master
    poj1321 棋盘问题
    poj3083 Children of the Candy Cor
    jvm基础知识—垃圾回收机制
    jvm基础知识1
    java面试基础必备
    java soket通信总结 bio nio aio的区别和总结
    java scoket aIO 通信
    java scoket Blocking 阻塞IO socket通信四
  • 原文地址:https://www.cnblogs.com/twodog/p/12136844.html
Copyright © 2011-2022 走看看