楼主: yanhuaguo
1529 6

[原创博文] 一道概率题求助 [推广有奖]

  • 0关注
  • 1粉丝

大专生

40%

还不是VIP/贵宾

-

威望
0
论坛币
116 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
458 点
帖子
34
精华
0
在线时间
51 小时
注册时间
2011-9-24
最后登录
2012-9-22

楼主
yanhuaguo 发表于 2012-2-24 16:17:54 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
一道经典概率题:一场足球比赛有22名运动员,有人生日相同的概率是多少。
这个如果用古典概率算法,算出来是48%。
我手头刚好有一份600人左右的身份证号码,已经从中提取了生日信息。
想用SAS来抽样验证以上概率
已经用pickit=ceil(rannui(0)*600)在样本中随机抽取观测,每个数据集抽取22个
这样可以通过生成很多个数据集
判断有几个数据集出现生日一样的,除以总数据集,应该接近48%的概率
不过对于每一个数据集,如何判断有生日一样?
还请各位大侠不吝赐教,谢谢。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:身份证号码 Pick 各位大侠 身份证号 数据集 身份证号码 运动员 经典 如何 生日

沙发
Schizor 发表于 2012-2-24 16:33:02
48% 怎么算出来的啊?

藤椅
wh_wing 发表于 2012-2-24 18:29:28
Schizor 发表于 2012-2-24 16:33
48% 怎么算出来的啊?
1-365*364*...*344/365^22

板凳
freerunning_sky 在职认证  发表于 2012-2-24 20:16:20
  1. data birth_dt;
  2.         set id;
  3.         if length(id)=18 then birth_dt=substr(id,11,4);
  4.         if length(id)=15 then birth_dt=substr(id,9,4);
  5. run;


  6. %let total_num=10000;
  7. %let count=0;
  8. %macro Prob;
  9.         %do i=1 %to &total_num;
  10.                 proc surveyselect data =birth_dt method = srs n =22 out=Sample noprint;run ;

  11.                 proc sql noprint;
  12.                         create table tmp as
  13.                         select count(*) as num from Sample
  14.                         group by birth_dt
  15.                         order by num desc
  16.                         ;
  17.                 select num into:max_num from tmp;
  18.                 quit;
  19.                 %if &max_num>1 %then %let count=%eval(&count+1);
  20.         %end;
  21. %mend;
  22. %Prob;
  23. %put %eval(&count/&total_num);
复制代码

报纸
damiloveu 发表于 2012-2-25 03:59:22
看到高手了~

地板
jingju11 发表于 2012-2-25 06:30:49
...
proc surveyselect data =a method = srs n =22 out=a2 reps =10000 noprint seed =11;
run ;
ods listing;
proc sql;
   select sum(sameB)*1e-4 label =' the probability is ' from (
      select (count(distinct monthD) <22) as sameB from (
         select replicate, put(month(birthday), z2.)||put(day(birthday), z2.) as monthD from a2)
         group by replicate
)
;
quit;

Ricky 认为程序的效率可以归结为尽量减少DO循环的次数。在我眼里使用%DO往往更糟糕。不过我并没有测试楼上程序的效率。京剧

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
zhangzachary + 1 + 1 + 1 好的意见建议

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

7
freerunning_sky 在职认证  发表于 2012-2-26 21:33:22
jingju11 发表于 2012-2-25 06:30
...
proc surveyselect data =a method = srs n =22 out=a2 reps =10000 noprint seed =11;
run ;
恩,很赞!学习之!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 23:38