一孩半政策

一)  一孩半,又称独女户二胎,即中国大陆部分农村的一项计划生育政策,第一胎是女孩的夫妻可生育第二个子女。试问这个政策会不会影响男女平衡。

二)如果生女孩一直生,直到生男孩停止,试问会不会影响男女平衡。

三)如果第二胎有5%的人工性别选择干预一定要生男孩,试问这个政策会不会影响男女平衡。

   if(rand()%100<5) //每次调用rand()就是一次孩子,100个人有5个人一定要生男孩,另95个,随机生。

四)如果只有x%的家庭选择二胎(且二胎人工干预选择性别),试问这个政策会不会影响男女平衡。

五)如果不考虑一孩半政策,只执行独生子女政策,有5%的人工性别选择干预,试问独生子女政策会不会影响男女平衡。

一)代码

#include 
#include 
#include 
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 
#include 
#include 
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 << "男女比例:"<

三)代码

#include 
#include 
#include 
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 
#include 
#include 
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 << "男女比例:"<

五)代码

#include 
#include 
#include 
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;
}

个人理解是这样的。

你可能感兴趣的:(ACM作业,c++)