模拟农村生育状况的算法

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值