一) 一孩半,又称独女户二胎,即中国大陆部分农村的一项计划生育政策,第一胎是女孩的夫妻可生育第二个子女。试问这个政策会不会影响男女平衡。
二)如果生女孩一直生,直到生男孩停止,试问会不会影响男女平衡。
三)如果第二胎有5%的人工性别选择干预一定要生男孩,试问这个政策会不会影响男女平衡。
if(rand()%100<5) //每次调用rand()就是一次孩子,100个人有5个人一定要生男孩,另95个,随机生。
四)如果只有x%的家庭选择二胎(且二胎人工干预选择性别),试问这个政策会不会影响男女平衡。
五)如果不考虑一孩半政策,只执行独生子女政策,有5%的人工性别选择干预,试问独生子女政策会不会影响男女平衡。
一)代码
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
int i;
float girl = 0, boy = 0; //假定一开始没有婴儿,男女孩都为0
srand((unsigned)time(NULL)); //随机种子
for (i = 1; i <= 100000; i++) //假定有100000对夫妻生孩子,数目越大结果越精确
{
if ((rand() % 2 + 0) == 1)boy++; //随机生成0和1,(rand()%(n-m+1)+m)生成[m,n]的随机数
else if ((rand() % 2 + 0) == 0) //0代表女孩,1代表男孩,出现0则继续生二胎
{
girl++;
if ((rand() % 2 + 0) == 1)boy++; //二胎也随机男女
else girl++;
}
}
float proportion = boy / girl;
cout << proportion << endl;
if (proportion == 1)cout << "不影响男女平衡";
else if (proportion > 1)cout << "男女失衡,呈现男多女少";
else cout << "男女失衡,呈现男少女多";
return 0;
}
二)代码
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
int i;
float girl = 0, boy = 0; //假定一开始没有婴儿,男女孩都为0
srand((unsigned)time(NULL)); //随机种子
for (i = 1; i <= 100000; i++) //假定有100000对夫妻生孩子,数目越大结果越精确
{
if ((rand() % 2 + 0) == 1)boy++; //生了男孩
else //生了女孩,则要继续生
{
while (1) //死循环,如果生了女孩则继续生,生了男孩则可以结束循环
{
girl++;
if ((rand() % 2 + 0) == 1) //如果条件不成立,即生了女孩,返回循环,girl++,再继续生
{
boy++; break;
}
}
}
}
float proportion = boy / girl;
cout << "男女比例:"<<proportion << endl;
return 0;
}
三)代码
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
int i, n = 0;
float girl = 0, boy = 0; //假定一开始没有婴儿,男女孩都为0
srand((unsigned)time(NULL)); //随机种子
for (i = 1; i <= 100000; i++) //假定有100000对夫妻生孩子,数目越大结果越精确
{
if ((rand() % 2 + 0) == 1)boy++; //生了男孩
else //生了女孩,则要继续生
{
girl++;
n++; //n表示多少夫妻生二胎
}
}
for (i = 1; i <= n; i++)
{
if (i <= n * 0.05) //5%的人工干预,即需要生二胎的家庭中5%的家庭一定生男孩
{
boy++; //这些家庭一定生男孩
}
else //5%的人工干预之后的其他家庭随机生
{
if ((rand() % 2 + 0) == 1)boy++;
else girl++;
}
}
float proportion = boy / girl;
cout << "男女比例:" << proportion << endl;
return 0;
}
四)代码
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
int i,n=0;
float girl = 0, boy = 0; //假定一开始没有婴儿,男女孩都为0
srand((unsigned)time(NULL)); //随机种子
int x;
cin >> x;
for (i = 1; i <= 100000; i++) //假定有100000对夫妻生孩子,数目越大结果越精确
{
if ((rand() % 2 + 0) == 1)boy++; //生了男孩
else
{
girl++;
n++; //要生二胎的人数
}
}
for (i = 1; i <= n; i++)
{
if (i <= n * x * 0.01)boy++; //只有x%的夫妻选择生二胎,且都干预生了男孩
}
float proportion = boy / girl;
cout << "男女比例:"<<proportion << endl;
return 0;
}
五)代码
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
int i, n = 0;
float girl = 0, boy = 0; //假定一开始没有婴儿,男女孩都为0
srand((unsigned)time(NULL)); //随机种子
for (i = 1; i <= 100000; i++) //假定有100000对夫妻生孩子,数目越大结果越精确
{
if (i <= 100000 * 0.05)boy++; //5%的家庭生男孩,剩下的家庭随机生
else
{
if ((rand() % 2 + 0) == 1)boy++;
else girl++;
}
}
float proportion = boy / girl;
cout << "男女比例:" << proportion << endl;
return 0;
}
个人理解是这样的。