本文共 1747 字,大约阅读时间需要 5 分钟。
阿里巴巴的一道面试题:说澳大利亚的父母喜欢女孩,如果生出来的第一个女孩,就不再生了,如果是男孩就继续生,直到生到第一个女孩为止,问若干年后,男女的比例是多少?
刚看到问题是的思维逻辑:用递推法,假设一对夫妻,生了个女儿,就不再要了;另外一对夫妻,生了个儿子,再要一个,是女儿,然后也就不要了。第一感觉,应该是女的比男的多。然后思考如何证明这个结论。用数学可以证明,比如用归纳法,看看男女到底比例应该是多少。
后来用仔细考虑了一下:一个家庭如果一直没有生女孩,不是要生多个男孩才对一个女孩吗?女多于男的结论未必正确。我的一个同事坚持认为,女孩的个数一定多余男孩的个数。哈哈,真是这样吗?
有一点我后来考虑到了,就是生男和生女的几率都是一样的,是不是应该是1:1啊?用编程来验证一下。我写了一个下面的小程序来验证我的程序:
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,男孩小于女孩。我运行了多次,都是这个结果。从理论上来说,不一定"男孩个数一定小于女孩个数",但是结果每次都是这样,可能是"男孩个数小于女孩个数"出现的几率比较高。
人的第一感觉(或第一印象)是如此的不靠谱。而人很多时候又对第一感觉十分的依赖。如何突破我们的第一感觉去抓住事物的本质,是一个需要我们深入思考的问题。
转载地址:http://zlzqi.baihongyu.com/