最近网上的一个热门话题引起的。。

来源:互联网 发布:小学生编程软件下载 编辑:程序博客网 时间:2024/04/28 01:33

最近看天涯论坛很多人讨论的一道题,很多人都说答案是2/3,教材上的答案也是2/3,也有很多人认为答案是1/2,包括我,于是我写了一个小程序来模拟,结果答案是2/3:

帖子的原址:http://bbs.tianya.cn/post-funinfo-6129343-1.shtml?event=rss|rss_web

先附上原题:

 

程序如下:

#include "stdafx.h"#include <stdlib.h>#include <time.h>#define GIRL(1)#define BOY(0)#define N(10000)//采样范围typedef struct {int first_child;//第一个孩子int second_child;//第二个孩子}T_FAMILY;//家庭T_FAMILY families[N];int _tmain(int argc, _TCHAR* argv[]){int val;int only_boys = 0;//只有两个男孩的家庭数int only_girls = 0;//只有两个女孩的家庭数int boy_girl = 0;//有一男一女的家庭数srand(time(NULL));for(int i = 0; i < N; i++){//随机生成一个家庭//生成第一个孩子的性别val = rand() % 2; (val == 1)?(families[i].first_child = GIRL):(families[i].first_child = BOY);//生成第二个孩子的性别val = rand() % 2; (val == 1)?(families[i].second_child= GIRL):(families[i].second_child = BOY);//累加val = families[i].first_child + families[i].second_child;if(val == 2){//只有女孩的家庭only_girls++;}else if(val == 0){//只有男孩的家庭only_boys++;}else if(val = 1){//有男有女的家庭boy_girl++;}else{printf("error! no.1\n");}}//countprintf("统计结果(模拟采样总数为10000):\n");printf("只有男孩的家庭:%d\n",only_boys);printf("只有女孩的家庭:%d\n",only_girls);printf("有男有女的家庭:%d\n",boy_girl);printf("已知一个为女孩另一个为男孩的家庭概率为:%d/(%d+%d) = %.2f\n",boy_girl,only_girls,boy_girl,(float)boy_girl/(float)(boy_girl+only_girls));printf("任意键退出...\n");getchar();return 0;}


 

执行结果如下:

 

0 0
原创粉丝点击