热门标签 | HotTags
当前位置:  开发笔记 > 小程序 > 正文

趣味算法:生男生女的比例

阿里巴巴的一道面试题:说澳大利亚的父母喜欢女孩,如果生出来的第一个女孩,就不再生了,如果是男孩就继续生,直到生到第一个女孩为止,问若干年后,男女的比例是多少?刚看到问题是的思维逻辑:用递推法,假设一对夫妻,生了个女儿,就不再要了;另外一对夫妻,生了个儿子,再要一个,是女儿,然后也就不要了。第一感觉,应该是女的比男的多。

阿里巴巴的一道面试题:说澳大利亚的父母喜欢女孩,如果生出来的第一个女孩,就不再生了,如果是男孩就继续生,直到生到第一个女孩为止,问若干年后,男女的比例是多少?

刚看到问题是的思维逻辑:用递推法,假设一对夫妻,生了个女儿,就不再要了;另外一对夫妻,生了个儿子,再要一个,是女儿,然后也就不要了。第一感觉,应该是女的比男的多。然后思考如何证明这个结论。用数学可以证明,比如用归纳法,看看男女到底比例应该是多少。

后来用仔细考虑了一下:一个家庭如果一直没有生女孩,不是要生多个男孩才对一个女孩吗?女多于男的结论未必正确。我的一个同事坚持认为,女孩的个数一定多余男孩的个数。哈哈,真是这样吗?

有一点我后来考虑到了,就是生男和生女的几率都是一样的,是不是应该是1:1啊?用编程来验证一下。我写了一个下面的小程序来验证我的程序:

#include   
#include   
#define MAN    1  //男孩  
#define WOMAN  0  //女孩  
static int g_iManNum = 0;  //男孩个数  
static int g_iWoManNum = 0;  //女孩个数  
static void AddOneMan()  
{  
    g_iManNum++;  
}  
static void AddOneWoman()  
{  
    g_iWoManNum++;  
}  
static int GetOneChild()  
{  
    return (rand()%2);  
}  
static void PrintResult()  
{  
    printf("Man's number is %d, woman's number is %d.\n", g_iManNum,    
g_iWoManNum);  
      
    float fResult = (float)g_iManNum / (float)g_iWoManNum;  
          
    printf("Man / Woman is [%f]\n", fResult);  
}  
static void OneFamilyGetChild()  
{  
    int iChildType = GetOneChild();  
    if (MAN == iChildType)  
    {  
        //如果是男孩,则递归调用,再生一个小孩,直到生出一个女孩为止  
        AddOneMan();  
        OneFamilyGetChild();  
    }  
    else if (WOMAN == iChildType)  
    {  
        AddOneWoman();  
    }  
    else  
    {  
        printf("child type is error!\n");  
        exit(0);  
    }  
}  
static void StatisticsOfAllFamily(int iFamilyCount)  
{  
    printf("Now family count is %d.\n", iFamilyCount);  
      
    int i = 0;  
    for (i = 0; i 
    
    

最终的结果是0.9996约等于1,男孩小于女孩。我运行了多次,都是这个结果。从理论上来说,不一定"男孩个数一定小于女孩个数",但是结果每次都是这样,可能是"男孩个数小于女孩个数"出现的几率比较高。

人的第一感觉(或第一印象)是如此的不靠谱。而人很多时候又对第一感觉十分的依赖。如何突破我们的第一感觉去抓住事物的本质,是一个需要我们深入思考的问题。

本文地址:http://www.nowamagic.net/librarys/veda/detail/1472,欢迎访问原出处。


推荐阅读
author-avatar
mobiledu2502939211
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有