和N=365和x=23,随机生成的数字,您的审查程序类似于著名的生日问题,其中人们会期望匹配的数字在x略多于一半的时间。但是,生日匹配的可能性23对于现实生活中某些月份比其他月份更有可能产生实际人类生日的现实情况来说是相当稳健的。
因此,在大约一半的时间内未能获得一个或多个匹配会让人怀疑“生成器”的随机性,但在接近一半的时间内获得匹配并不能有力地证明这些数字是真正随机生成的。
经典的生日问题,同样可能的 365 个同样可能的生日。通过R中的模拟,
P(Y=0)=0.494±0.003[确切的概率0比赛是0.4927到四个地方]和E(Y)=0.678±0.005.
set.seed(1234)
x = 23; N = 365
y = replicate(10^5, x-length(unique(sample(1:N,x,rep=T))))
mean(y==0); mean(y)
[1] 0.49395 # aprx P(No Match)
[1] 0.67842 # aprx E(Nr Matches)
2*sd(y==0)/sqrt(10^5)
[1] 0.003162062
2*sd(y)/sqrt(10^5)
[1] 0.005012195
天数不太可能(在一年中的两个半月中大约有 95% 和 110% 的可能性):P(Y=0)=0.491±0.002,E(Y)=0.683±0.003.
在模拟误差范围内,结果与同样可能天数的结果没有显着差异。
set.seed(1235)
x = 23; N = 365; pr = c(rep(95, 180), rep(105, 185))
y = replicate(10^5, x-length(unique(sample(1:N,x,rep=T,p=pr))))
mean(y==0); mean(y)
[1] 0.49102
[1] 0.68265
sd(y==0)/sqrt(10^5)
[1] 0.001580892
sd(y)/sqrt(10^5)
[1] 0.002509512
生日问题已经通过更广泛的模拟显示出来,如果生日的可能性不完全一样,则不会特别挑剔。
有一些问题对随机数生成器中的缺陷非常敏感。您可以在“死硬电池”中搜索特别挑剔的模拟问题,这些问题已用于审查伪随机数生成器。