实验28概率论中生日问题的模拟 此程序可模拟任意m个人中至少有两个人生日一样的概率: birth(n,m):=s←0 ori∈0. u←0 fork∈0. ∈k+ x1-XK continue otherwise s←s+lifu≠0 bith(100,40)=0.87128713 以下程序用来确定任意m个人中生日一样的人数对:输出结果中的 最后一个数据统计出这个人数对的值 fre(m):=|forj∈0.m x←cem()365 fork∈0.m continue otherwise
实验28 概率论中生日问题的模拟 此程序可模拟任意m个人中至少有两个人生日一样的概率: birth(n,m) s ¬ 0 x j ¬ ceil(rnd(1)×365) for j Î 0.. m u ¬ 0 z ¬ 1 u ¬ u + z x l x k if = continue otherwise for l Î k + 1.. m for kÎ 0.. m - 1 s ¬ s + 1 if u ¹ 0 for i Î 0.. n s n + 1 := birth(100, 40) = 0.87128713 以下程序用来确定任意m个人中生日一样的人数对:输出结果中的 最后一个数据统计出这个人数对的值. fre(m) x j ¬ ceil(rnd(1)×365) for j Î 0.. m u ¬ 0 z ¬ 1 u ¬ u + z x l x k if = continue otherwise for l Î k + 1.. m for kÎ 0.. m - 1 x ¬ sort(x) x m+1 ¬ u x T :=
按照通常的计算有: (365-1+1 =20.4.10m=50.10 365 birth(n) 04114383836 0.706316242719 40 0.8912318098 0970373579578 9941226609 0000 0.999159575965 9999143319 09993 110 0.999999989471 0.9999999998 13 0.999999999996
fre(50) 0 1 2 3 4 5 6 7 8 9 10 11 0 15 20 37 44 50 54 58 68 75 77 84 87 = 按照通常的计算有: pbirth(k) 1 1 k i (365 - i + 1) Õ 365 = := - n := 20,40.. 120 m := 30, 50.. 130 n 20 40 60 80 100 120 = pbirth(n) 0.4114383836 0.8912318098 0.9941226609 0.9999143319 0.9999996928 0.9999999998 = m 30 50 70 90 110 130 = pbirth(m) 0.706316242719 0.970373579578 0.999159575965 0.999993848356 0.999999989471 0.999999999996 =