一) 一孩半,又称独女户二胎,即中国大陆部分农村的一项计划生育政策,第一胎是女孩的夫妻可生育第二个子女。试问这个政策会不会影响男女平衡。
二)如果生女孩一直生,直到生男孩停止,试问会不会影响男女平衡。
三)如果第二胎有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; //假定一开始没有婴儿,男女孩都为0srand((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; //假定一开始没有婴儿,男女孩都为0srand((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; //假定一开始没有婴儿,男女孩都为0srand((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; //假定一开始没有婴儿,男女孩都为0srand((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; //假定一开始没有婴儿,男女孩都为0srand((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;
}
个人理解是这样的。