크리에이티브 커먼즈 라이선스
Creative Commons License
수치해석 시간에 교수님께서 간단한 문제를 이야기 하셨다.
어떤 가상의 나라에 한 마을에 100가구가 있는데, 그 마을은 남아를 선호한다고 한다.
나라의 법칙상 아이는 5명까지 낳을 수 있다고 하는데
아들을 낳고 다음 아이를 낳지 않을 확률은 70%이고, 딸을 놓고 다음아이를 낳지 않을 확률은 30%라고 한다.
만약 임신중절이나 별 다른 방법을 쓰지 않고 오로지 자연적인 출산을 할 때의 그 마을 아이들의 성비를 구하라.
수업이 끝나고 공부를 하다가 머리를 식힐겸 간단한 프로그래밍을 해봤다.
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>

#define    PEOPLEMAX    100
#define    BESTTIMES    5
#define    MEND    70
#define    WEND    30

int main(int argc, char *argv[])
{
    int people, times, m=0, w=0;
    srand(time(0));
    for(people=1;people!=PEOPLEMAX+1;people++)
    {
        printf("\n%d번째 집 : \t",people);
        for(times=1;times!=BESTTIMES+1;times++)
        {
            if(rand()%2 == 0)
            {
                m++;
                printf("아들 \t");
                if(rand()%101 <MEND)
                    break;
            }
            else{
                w++;
                printf("딸 \t");
                if(rand()%101 <WEND)
                    break;
            }
           
        }
    }
    printf("\n마을의 아들은 %d명 딸은 %d명 입니다. \n성비는 %d : %d\n",m,w, m*100/(m+w),w*100/(m+w));
    return 0;
}
컴파일하고 실행시켰더니 웬걸.  오히려 아들이 많을 때도 있고, 딸이 많을 때도 있더라.

아들이 많을 경우는 아들만 낳고 그만두기 때문이고 딸이 많을 때는 아들을 낳기 위해 여러번 출산하기 때문이다.
따라서 실제로는 성비가 5:5에 가깝게 나타난다. 이것은 마을의 인구를 늘려도 마찬가지다.

실제 세상에서는 아들을 선호하기는 하지만 여러명 낳을 경우의 부담과, 딸만 놓고 그만두는 경우를 생각하면 아들 하나만 낳는 경우도 많기에 실제로는 딸이 더 많은 것이 아닐까?
이올린에 북마크하기(0) 이올린에 추천하기(0)