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

  • 相关阅读:
    linux定时任务
    php与xpath使用操作文本节点
    php处理图片实现
    Yii源码阅读笔记
    Yii源码阅读笔记
    Yii源码阅读笔记
    Yii源码阅读笔记
    Yii源码阅读笔记
    Yii源码阅读笔记
    Yii源码阅读笔记
  • 原文地址:https://www.cnblogs.com/twodog/p/12136845.html
Copyright © 2011-2022 走看看