看到海外某中文论坛上一帮人讨论,“生男即止”生育模型会导致男女比例失调吗,我也来凑热闹:
0.假设有n个家庭,n要足够大,比如10万个;
1.随机得到某个家庭的可生育数,该数有上限,比如4,则一个家庭的可生育数范围在0-4;
2.随机生男孩或女孩,如果是男孩就不再生了,如果是女孩就继续生直到达到这个家庭的可生育数;
3.分别统计男孩和女孩的数量。
n = 100000; // 家庭总数
N = 5; // 生育上限
g = 0; // 女孩数
b = 0; // 男孩数
for(i=0; i<n; i++)
{
k = Rand(0);
k = k%N;
for(j=0; j<k; j++)
{
ch = Rand(0);
ch = ch % 2;
if( ch ) // 如果是男孩
{
b++;
break; // 不生了
}
else
g++;
}
}
DispInfo(0, "男孩"+b);
DispInfo(1, "女孩"+g);
DispInfo(2, "总数"+(b+g));
return(0);
-------
男孩女孩比例:
结果1
53129/52585 = 1.010345
结果2
53019/52702 = 1.006015
-------
结果是男孩女孩比例基本一样。
opencti网友用我的代码(改为C语言),结果也是几乎相等。
也有人从理论上分析了,这样的选择并不会导致男女比例失调。