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

  • 相关阅读:
    关于MVC与MVP的理解
    使用JDBC连接数据库
    常见DML语句汇总
    java字符常量
    java中Map,List与Set的区别
    面向对象重写(override)与重载(overload)区别
    嵌入式系统的体系结构 图解
    使用webpack + momentjs时, 需要注意的问题
    联想电脑屏幕亮度无法调节
    树形数据构造
  • 原文地址:https://www.cnblogs.com/twodog/p/12136846.html
Copyright © 2011-2022 走看看