模拟农村生育状况的算法

来源:互联网 发布:阿里云技术认证acp 编辑:程序博客网 时间:2024/04/29 13:06

看到海外某中文论坛上一帮人讨论,“生男即止”生育模型会导致男女比例失调吗,我也来凑热闹:
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语言),结果也是几乎相等。
也有人从理论上分析了,这样的选择并不会导致男女比例失调。

原创粉丝点击