小赖子的英国生活和资讯

如果大家要是一直生一直生直到生到女儿, 岂不是男女比例失调啊?

阅读 桌面完整版

一直想要个女儿. @happyukgo 可是条件不允许, 至少是暂时的吧.

然后就有这么一个问题: 如果大家要是一直生一直生直到生到女儿, 生到女儿就不生了, 这样大概来说男孩女孩比例还是 1:1 么?

如果生男孩是B, 生女孩是G, 只生一个大家都知道是50%的概率(染色体XX和XY结合 各50%的概率生男孩或生女孩). 如果一直生直到生女孩 这序列就是:

G, BG, BBG, BBBG, ….

关键来了, 好像男孩B比较多, 我们用P(B)表示生男孩的概率, P(A)表示生女孩的概率, P(BG) 表示生一男一女的概率 ..

还没生的时候, 再生一女孩 P(B)的总概率是1/2, 概率乘于男孩个数 = 0
当生一男孩后, 再生一女孩 P(BG)的总概率是1/4 (剩下50% 再乘于50%), 概率乘于男孩个数 = 1/4
当生二男孩后, 再生一女孩 P(BBG)的总概率是1/8 (剩下25% 再乘于50%), 概率乘于男孩个数 = 2/8
当生三男孩后, 再生一女孩 P(BBBG)的总概率是1/16 (剩下25% 再乘于50%), 概率乘于男孩个数 = 3/16
以此类推:
概率乘于男孩个数 =

把这些相加:

当 i 趋近于无穷大的时候 这值约为 1. 也就是说每个家庭生男孩子平均值为1 而我们知道每个家庭生女孩个数为1 所以男女比例50%:50%.

如果你还是有点不信 那么我们用VBScript程序来仿真一下吧:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
boys = 0
girls = 0
N = 100000
 
Function Gender
    Gender = Rnd() <= 0.5
End Function
 
For i = 1 To N 
    boy = 0
    girl = 0
    Do 
        If (Gender) Then
            boys = boys + 1
        Else
            girl = 1
        End If 
    Loop Until girl > 0
    boys = boys + boy
    girls = girls + girl
Next
 
WScript.Echo boys / girls  '1.00183
boys = 0
girls = 0
N = 100000

Function Gender
	Gender = Rnd() <= 0.5
End Function

For i = 1 To N 
	boy = 0
	girl = 0
	Do 
		If (Gender) Then
			boys = boys + 1
		Else
			girl = 1
		End If 
	Loop Until girl > 0
	boys = boys + boy
	girls = girls + girl
Next

WScript.Echo boys / girls  '1.00183

当 N 越来越大 这比例是越来越接近 1 所以生男生女都一样… 哎哎 真是羡慕 @tumutanzi

相关英文帖子: Boy or Girl? Python Validation

强烈推荐

微信公众号: 小赖子的英国生活和资讯 JustYYUK

阅读 桌面完整版
Exit mobile version