- 浏览: 21250 次
- 性别:
- 来自: 南京
最新评论
阿里巴巴的一道面试题:说澳大利亚的父母喜欢女孩,如果生出来的第一个女孩,就不再生了,如果是男孩就继续生,直到生到第一个女孩为止,问若干年后,男女的比例是多少?
刚看到问题是的思维逻辑:用递推法,假设一对夫妻,生了个女儿,就不再要了;另外一对夫妻,生了个儿子,再要一个,是女儿,然后也就不要了。第一感觉,应该是女的比男的多。然后思考如何证明这个结论。用数学可以证明,比如用归纳法,看看男女到底比例应该是多少。
后来用仔细考虑了一下:一个家庭如果一直没有生女孩,不是要生多个男孩才对一个女孩吗?女多于男的结论未必正确。我的一个同事坚持认为,女孩的个数一定多余男孩的个数。哈哈,真是这样吗?
有一点我后来考虑到了,就是生男和生女的几率都是一样的,是不是应该是1:1啊?用编程来验证一下。我写了一个下面的小程序来验证我的程序:
view sourceprint?01 #include <stdio.h>
02 #include <stdlib.h>
03 #define MAN 1 //男孩
04 #define WOMAN 0 //女孩
05 static int g_iManNum = 0; //男孩个数
06 static int g_iWoManNum = 0; //女孩个数
07 static void AddOneMan()
08 {
09 g_iManNum++;
10 }
11 static void AddOneWoman()
12 {
13 g_iWoManNum++;
14 }
15 static int GetOneChild()
16 {
17 return (rand()%2);
18 }
19 static void PrintResult()
20 {
21 printf("Man's number is %d, woman's number is %d.\n", g_iManNum,
22 g_iWoManNum);
23
24 float fResult = (float)g_iManNum / (float)g_iWoManNum;
25
26 printf("Man / Woman is [%f]\n", fResult);
27 }
28 static void OneFamilyGetChild()
29 {
30 int iChildType = GetOneChild();
31 if (MAN == iChildType)
32 {
33 //如果是男孩,则递归调用,再生一个小孩,直到生出一个女孩为止
34 AddOneMan();
35 OneFamilyGetChild();
36 }
37 else if (WOMAN == iChildType)
38 {
39 AddOneWoman();
40 }
41 else
42 {
43 printf("child type is error!\n");
44 exit(0);
45 }
46 }
47 static void StatisticsOfAllFamily(int iFamilyCount)
48 {
49 printf("Now family count is %d.\n", iFamilyCount);
50
51 int i = 0;
52 for (i = 0; i < iFamilyCount; i++)
53 {
54 OneFamilyGetChild();
55 }
56
57 PrintResult();
58 }
59 int main ()
60 {
61 srand(time(NULL));
62 StatisticsOfAllFamily(1000000);
63
64 return 1;
65 }
最终的结果是0.9996约等于1,男孩小于女孩。我运行了多次,都是这个结果。从理论上来说,不一定"男孩个数一定小于女孩个数",但是结果每次都是这样,可能是"男孩个数小于女孩个数"出现的几率比较高。
人的第一感觉(或第一印象)是如此的不靠谱。而人很多时候又对第一感觉十分的依赖。如何突破我们的第一感觉去抓住事物的本质,是一个需要我们深入思考的问题。
刚看到问题是的思维逻辑:用递推法,假设一对夫妻,生了个女儿,就不再要了;另外一对夫妻,生了个儿子,再要一个,是女儿,然后也就不要了。第一感觉,应该是女的比男的多。然后思考如何证明这个结论。用数学可以证明,比如用归纳法,看看男女到底比例应该是多少。
后来用仔细考虑了一下:一个家庭如果一直没有生女孩,不是要生多个男孩才对一个女孩吗?女多于男的结论未必正确。我的一个同事坚持认为,女孩的个数一定多余男孩的个数。哈哈,真是这样吗?
有一点我后来考虑到了,就是生男和生女的几率都是一样的,是不是应该是1:1啊?用编程来验证一下。我写了一个下面的小程序来验证我的程序:
view sourceprint?01 #include <stdio.h>
02 #include <stdlib.h>
03 #define MAN 1 //男孩
04 #define WOMAN 0 //女孩
05 static int g_iManNum = 0; //男孩个数
06 static int g_iWoManNum = 0; //女孩个数
07 static void AddOneMan()
08 {
09 g_iManNum++;
10 }
11 static void AddOneWoman()
12 {
13 g_iWoManNum++;
14 }
15 static int GetOneChild()
16 {
17 return (rand()%2);
18 }
19 static void PrintResult()
20 {
21 printf("Man's number is %d, woman's number is %d.\n", g_iManNum,
22 g_iWoManNum);
23
24 float fResult = (float)g_iManNum / (float)g_iWoManNum;
25
26 printf("Man / Woman is [%f]\n", fResult);
27 }
28 static void OneFamilyGetChild()
29 {
30 int iChildType = GetOneChild();
31 if (MAN == iChildType)
32 {
33 //如果是男孩,则递归调用,再生一个小孩,直到生出一个女孩为止
34 AddOneMan();
35 OneFamilyGetChild();
36 }
37 else if (WOMAN == iChildType)
38 {
39 AddOneWoman();
40 }
41 else
42 {
43 printf("child type is error!\n");
44 exit(0);
45 }
46 }
47 static void StatisticsOfAllFamily(int iFamilyCount)
48 {
49 printf("Now family count is %d.\n", iFamilyCount);
50
51 int i = 0;
52 for (i = 0; i < iFamilyCount; i++)
53 {
54 OneFamilyGetChild();
55 }
56
57 PrintResult();
58 }
59 int main ()
60 {
61 srand(time(NULL));
62 StatisticsOfAllFamily(1000000);
63
64 return 1;
65 }
最终的结果是0.9996约等于1,男孩小于女孩。我运行了多次,都是这个结果。从理论上来说,不一定"男孩个数一定小于女孩个数",但是结果每次都是这样,可能是"男孩个数小于女孩个数"出现的几率比较高。
人的第一感觉(或第一印象)是如此的不靠谱。而人很多时候又对第一感觉十分的依赖。如何突破我们的第一感觉去抓住事物的本质,是一个需要我们深入思考的问题。
发表评论
-
KMP快速字符串查找算法
2011-08-25 19:29 640在C/C++语言编程过程中,一般的字符串搜索操作都是通过标准库 ... -
求解最大公约数问题
2011-08-25 19:27 662最大公因数,又称最大公约数。是指 [n(≧2)个自然数 a1, ... -
堆排序(Heap Sort)算法学习
2011-08-25 19:26 1058在程序设计相关领域, ... -
整数拆分问题的动态规划解法
2011-08-25 19:26 3034输入n,和k,问将n用1到k这k个数字进行拆分,有多少种拆分方 ... -
背包问题介绍与分析
2011-08-25 19:24 1001背包问题是在1978年由Merkel和Hellman提出的。它 ... -
求平方根sqrt()函数的底层算法效率问题
2011-08-25 19:23 1264我们平时经常会有一些数据运算的操作,需要调用sqrt,exp, ... -
面试中常见的一些算法问题
2011-08-25 19:22 672Problem 1 : Is it a loop ? ( ... -
各种排序算法的C++实现与性能比较
2011-08-25 19:21 891排序是计算机算法中非常重要的一项,而排序算法又有不少实现方法, ... -
背包问题之硬币找零问题
2011-08-25 19:19 1129设有6 种不同面值的硬 ... -
求能被1到20的数整除的最小正整数
2011-08-25 19:18 1338求能被1到20的数整除的最小正整数。最直觉的方法是求1到20这 ... -
买书折扣最优惠问题解法
2011-08-25 19:17 721题目:在节假日的时候 ... -
二叉树中的最近公共祖先问题
2011-08-25 19:16 1294题目:要求寻找二叉树中两个节点的最近的公共祖先,并将其返回。 ... -
判断一个整数是否是2的N次方
2011-08-25 19:04 1790题目:给定一个整数num,判断这个整数是否是2的N次方。比如, ... -
字符串逆序的算法汇总
2011-08-25 19:01 1034很早就准备写一个字符串系列的面试题,本来已经写好了,大概有十几 ... -
计算从1到N中1的出现次数
2011-08-25 18:59 574给定一个十进制整数N, ... -
KMP快速字符串查找算法
2011-08-25 18:57 939在C/C++语言编程过程中,一般的字符串搜索操作都是通过标准库 ... -
快速排序的递归实现
2011-08-25 18:54 728快速排序是对冒泡排序的一种改进。它的基本思想是:通过一次排序将 ... -
数字1亿里面有多少个1呢
2011-08-25 18:52 710乍看这题真够唬人的,群里看到这个题目后争先恐后的说看法。最简单 ... -
最大子序列、最长公共子串、最长公共子序列
2011-08-25 18:33 755最大子序列 最大子序列是要找出由数组成的一维数组中和最大的连续 ...
相关推荐
c++面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试...
一道关于项目整合的面试题
面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题...
【BAT必备】分布式相关面试题大全面试题【BAT必备】分布式相关面试题大全面试题【BAT必备】分布式相关面试题大全面试题【BAT必备】分布式相关面试题大全面试题【BAT必备】分布式相关面试题大全面试题【BAT必备】...
JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题
2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里...
最全的j2EE面试题,题量大、经典,是我面试的整理试题 1、java笔试题大集合 2、各个公司面试题 3、J2EE初学者面试题 4、J2EE面试题(打码查错题) 5、java_华为笔试题 6、java常见面试题 7、java程序员面试宝典 8、...
JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题
.net面试题.net面试题.net面试题.net面试题.net面试题.net面试题.net面试题.net面试题.net面试题.net面试题
JavaOOP面试题 Java集合/泛型面试题 Java异常面试题 Java中的IO与NIO面试题 Java反射面试题 Java序列化面试题 Java注解面试题 多线程&并发面试题 JVM面试题 Mysql面试题 Redis面试题 Memcached面试题 MongoDB面试题 ...
c#笔试面试题 c#笔试面试题 c#笔试面试题 c#笔试面试题 c#笔试面试题
一道关于Ajax、Jquery的面试题,请各位好友把它做好
ERP工程师面试题ERP工程师面试题ERP工程师面试题ERP工程师面试题
java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题...
.net面试题.net面试题.net面试题.net面试题.net面试题.net面试题.net面试题.net面试题
面试题 面试题 面试题 面试题 面试题 面试题 面试题
大数据面试题V3.0完成了。共523道题,679页,46w+字,来源于牛客870+篇面经。 主要分为以下几部分: Hadoop面试题:100道 Zookeeper面试题:21道 Hive面试题:47道 Flume面试题:11道 Kafka面试题:59到 HBase面试题...
数据库面试题数据库面试题数据库面试题数据库面试题数据库面试题数据库面试题数据库面试题数据库面试题
最新各大公司企业真实面试题-Java面试题最新各大公司企业真实面试题-Java面试题
PHP面试题及答案 ,关于PHP最新面试题 ,绝对经典!最近一段时间的面试题