的数字在统计上是随机的吗?ππ

机器算法验证 随机生成 随机性
2022-02-06 21:02:16

假设您观察序列:

7, 9, 0, 5, 5, 5, 4, 8, 0, 6, 9, 5, 3, 8, 7, 8, 5, 4, 0, 0, 6, 6, 4, 5 , 3, 3, 7, 5, 9, 8, 1, 8, 6, 2, 8, 4, 6, 4, 1, 9, 9, 0, 5, 2, 2, 0, 4, 5, 2, 8。 ..

您将应用哪些统计测试来确定这是否真的是随机的?仅供参考,这些是个数字因此,的数字在统计上是随机的吗?这是否说明了常数nπππ

在此处输入图像描述

3个回答

美国国家标准研究院汇总了一系列测试,(伪)随机数生成器必须通过才能被认为是足够的,请参阅http://csrc.nist.gov/groups/ST/toolkit/rng/stats_tests。 .html _ 还有一些称为Diehard 测试套件的测试,它与 NIST 测试有些重叠。作为认证过程的一部分,Stata 统计软件包的开发人员报告了他们的 Diehard 结果。我想你可以取的数字块,比如连续 15 位数字的组,与double 类型的 accuracy 相媲美,并对由此获得的数字进行这些测试。π

只回答你的第一个问题:“你会应用哪些测试来确定这个[序列]是否真的是随机的?”

将其视为时间序列并检查自相关如何?这是一些R代码。首先是一些测试数据(前 1000 位):

digits_string="1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989"
digits=as.numeric(unlist(strsplit(digits_string,"")))

检查每个数字的计数:

> table(digits)
digits
  0   1   2   3   4   5   6   7   8   9 
 93 116 103 102  93  97  94  95 101 106 

然后将其转换为时间序列,并运行 Box-Pierce 测试:

d=as.ts( digits )
Box.test(d)

这告诉我:

X-squared = 1.2449, df = 1, p-value = 0.2645

通常,您希望 p 值低于 0.05 以表示存在自相关。

运行acf(d)以查看自相关。我没有在此处包含图像,因为它是一个沉闷的图表,尽管奇怪的是最大的滞后是在 11 和 22。运行acf(d,lag.max=40)以显示在 lag=33 处没有峰值,这只是巧合!


PS 我们可以通过对真实随机数进行相同的测试来比较这 1000 位 pi 的表现。

probs=sapply(1:100,function(n){
    digits=floor(runif(1000)*10)
    bt=Box.test(ts(digits))
    bt$p.value
    })

这会生成 1000 个随机数字,进行测试并重复 100 次。

> summary(probs)
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
0.006725 0.226800 0.469300 0.467100 0.709900 0.969900 
> sd(probs)
[1] 0.2904346

所以我们的结果在第一个标准偏差内很舒服,并且 pi 像一只随机的鸭子一样嘎嘎叫。set.seed(1)如果你想重现这些确切的数字,我会使用它。)

这是一个奇怪的问题。数字不是随机的。

作为以 10 位为底的时间序列,是完全固定的。π

如果您正在谈论随机选择时间序列的索引并选择该数字,请确保它是随机的。但是无聊的有理数如此。在这两种情况下,“随机性”都来自于随机挑选东西,比如从帽子上画名字。0.1212121212

如果您在谈论的内容更加细微,例如“如果我按顺序显示可能是随机的数字序列,您能告诉我它是否是的固定子集吗?它来自哪里?”。首先,虽然没有重复,但不同的随机序列至少会在小范围内局部对齐。这是数论结果,而不是统计结果。一旦你中断,你必须扫描到下一个对齐实例。在计算上,对齐任何随机序列都不容易处理,因为可以匹配到第位。哎呀,即使序列确实与πππ2222+1π某处,并不意味着它不是随机的。例如,我可以随机选择 3,并不意味着它是的第一个数字。π