生成“太完美”的随机数

时间:2010-03-06 19:54:26

标签: random statistics

一个好的RNG应该通过几项随机性统计测试。例如,可以将0到1范围内的均匀实数值分类成每个箱中具有大致相等计数的直方图,由于统计波动而给出或取一些。这些计数遵循一些分布,我不记得它是Poisson还是二项式或什么,但无论如何这些分布都有尾巴。同样的想法适用于相关性测试,微妙的周期性等。

高质量的RNG偶尔会失败进行统计测试。对于希望完美的RNG持怀疑态度是一个很好的建议。

好吧,我很疯狂,并希望生成(可重复的)“过于完美”的随机数,这些随机数可疑地缺乏统计测量中的随机波动。直方图太平,移动箱平均值的差异太小,相关性可疑接近于零等等。寻找通过所有统计检验的RNG太干净了。什么已知的RNG是这样的?是否有关于这个想法的研究?

一个不可接受的答案:一些较差的线性同余计数器发生器具有太平坦的分布,但完全不及时的大多数测试。

与此相关的是产生具有已知校准量的不完美的随机数流。分布中的一个块很容易 - 只是生成一个近似于这个想法的非均匀分布(例如参见Generating non-uniform random numbers)但是如何在保持正确或过于完美的分布的同时引入校准量的高阶相关性呢?

7 个答案:

答案 0 :(得分:4)

显然,Mersenne Twister是一种常用的随机数生成器,它通过“太随机”而无法通过DieHarder测试。换句话说,在真正的随机性下,某些测试始终过于接近其预期值。

答案 1 :(得分:3)

你做不到。如果在一次测试中它是平的,这将意味着在另一次测试中失败,因为平坦度表明它不是随机的。

答案 2 :(得分:1)

您可以尝试以下方式:

numbers = [1, 2, 3, 4, 5, 6] * 100
random.shuffle(numbers)

获得具有完美均匀分布的随机序列。

答案 3 :(得分:1)

我认为您正在寻找的可能是quasi-random sequence。准随机序列会以自我避免的方式抖动,而不是像随机序列那样聚集。当你看看有多少点落在不同的箱子中时,与随机序列相比,分布将会“太好”。

此外,本文可能相关:When people ask for a random sequence, they’re often disappointed with what they get

答案 4 :(得分:1)

如果您希望在设置相关性的同时生成一组随机数,则可能需要调查Cholesky分解。我怀疑从那里你只需要一个简单的转换来生成“太完美”的随机数。

答案 5 :(得分:0)

根据定义,PRNG(伪随机数发生器)不能生成真正的随机数。无论你使用什么技巧来生成伪随机序列,都会有一个测试通过显示实际的非随机性来揭示技巧。

答案 6 :(得分:0)

National Institutes of Standards and Technology Computer Security Division的人们对RNG有着持久的兴趣,能够衡量随机性程度。我在寻找旧的DIEHARD PRNG测试套件时发现了这一点。

National Security Agency的人们对RNG也有持久的兴趣,但他们不会告诉你太多。