#1
by C初心者AAAANNtT » 1年前
大学の課題で、
「結婚したての夫婦が,最初に生まれた子供と同性の子供が生まれるまで子供を作ることにした.
男子の生まれる確率をpとすると,p = 0 および p = 1 の時は子供の数は明らかに2人である.
それでは 0 < p < 1 の時に子供の数の平均は何人になるか,pを色々変化させてシミュレーションを行い,調査せよ.」
という課題がでて自分なりにコードを書いてみたのですが、実行結果がずっと200という同じ値にしかなりません。どこを改善すればよいか教えていただきたいです。
見にくいコードで申し負けありません。
コード:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main() {
double i, p, r, a, b = 0, girl, boy;
srand((unsigned int)time(NULL));
printf(" 0 < p < 10000の範囲でpの値を入力してください\n");
scanfs("p = %lf", &p);
p = p / 10000;
for (i = 0; i < 10000; i++) {
r = (double)rand() / RAND_MAX;
boy = 0;
girl = 0;
if (p > r) {
girl++;
}
else {
boy++;
}
if (girl == 0) {
while (boy < 2) {
r = (double)rand() / RAND_MAX;
if (p > r) {
girl++;
}
else {
boy++;
}
}
}
else if (girl == 1) {
while (girl < 2) {
r = (double)rand() / RAND_MAX;
if (p > r) {
girl++;
}
else {
boy++;
}
}
}
a = boy + girl;
b = b + a;
}
b = b / 100;
printf("子供の平均の数 = %f\n", b);
return 0;
}
大学の課題で、
「結婚したての夫婦が,最初に生まれた子供と同性の子供が生まれるまで子供を作ることにした.
男子の生まれる確率をpとすると,p = 0 および p = 1 の時は子供の数は明らかに2人である.
それでは 0 < p < 1 の時に子供の数の平均は何人になるか,pを色々変化させてシミュレーションを行い,調査せよ.」
という課題がでて自分なりにコードを書いてみたのですが、実行結果がずっと200という同じ値にしかなりません。どこを改善すればよいか教えていただきたいです。
見にくいコードで申し負けありません。
[code]
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main() {
double i, p, r, a, b = 0, girl, boy;
srand((unsigned int)time(NULL));
printf(" 0 < p < 10000の範囲でpの値を入力してください\n");
scanfs("p = %lf", &p);
p = p / 10000;
for (i = 0; i < 10000; i++) {
r = (double)rand() / RAND_MAX;
boy = 0;
girl = 0;
if (p > r) {
girl++;
}
else {
boy++;
}
if (girl == 0) {
while (boy < 2) {
r = (double)rand() / RAND_MAX;
if (p > r) {
girl++;
}
else {
boy++;
}
}
}
else if (girl == 1) {
while (girl < 2) {
r = (double)rand() / RAND_MAX;
if (p > r) {
girl++;
}
else {
boy++;
}
}
}
a = boy + girl;
b = b + a;
}
b = b / 100;
printf("子供の平均の数 = %f\n", b);
return 0;
}