【问题标题】:Generating "too perfect" random numbers生成“太完美”的随机数
【发布时间】:2010-03-06 19:54:26
【问题描述】:

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

高质量的 RNG 偶尔会在统计测试中失败。对看起来很完美的 RNG 持怀疑态度是个好建议。

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

一个不可接受的答案:一些较差的线性同余计数器生成器的分布过于平坦,但完全没有通过大多数随机性测试。

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

【问题讨论】:

  • 你的问题对我来说听起来很数学,也许mathoverflow.net 的人也可以提供帮助。
  • P!压缩包。或者你生活在一种罪恶的状态中。
  • 我相信类似的分析发现了一些学术造假的例子。数据的分布完全适合特定分布的特定 PRNG 的输出。

标签: random statistics


【解决方案1】:

显然,常用的随机数生成器 Mersenne Twister 由于“过于随机”而未能通过DieHarder 测试。换句话说,某些测试在真正随机性下总是太接近它们的预期值。

【讨论】:

  • 不过,可以使用 TestU01 使其失败。实际上,与所有 PRNG 一样。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    你可以试试这样的:

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

    得到一个完美均匀分布的随机序列。

    【讨论】:

      【解决方案4】:

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

      另外,这篇文章可能是相关的:When people ask for a random sequence, they’re often disappointed with what they get。

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • cholesky 与随机数有什么关系?
        • 假设您有 2 组随机生成的数字,您希望它们具有一定的相关性。首先,您定义希望获得数字的协方差矩阵(这将是一个 2 x 2 矩阵)。然后,您对协方差矩阵执行 Cholesky 分解。您可以将这 2 个集合(例如从高斯分布生成)放在一个 n x 2 矩阵中。将生成的数字乘以执行分解的协方差矩阵。
        • 有趣 - 我不会想到这一点。
        【解决方案6】:

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

        【讨论】:

        • 仅当您有足够的样本时。在一个好的 PRNG 中,理论上你可以使“足够”成为一个足够大的数字,以至于在你有足够的证据确定它不是真正随机之前,宇宙就会结束……
        【解决方案7】:

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

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

        【讨论】:

          猜你喜欢
          • 2014-04-15
          • 2023-03-14
          • 2016-10-08
          • 2015-12-14
          • 1970-01-01
          • 2012-05-17
          • 2014-10-24
          • 1970-01-01
          • 2014-07-27
          相关资源
          最近更新 更多