【问题标题】:Determining the similarity between two random number generators确定两个随机数生成器之间的相似性
【发布时间】:2011-05-03 23:30:51
【问题描述】:

假设我有两个随机数发生器 RNG-A 和 RNG-B,这样:

  • 它们在调用时都会产生随机的非无限浮点数
  • 我可以反复调用生成器并生成任意数量的随机数
  • 生成的随机数是独立同分布的(即 RNG 的输出独立于它们之前生成的所有内容)
  • 关于分布的形状,我不能保证其他任何事情

我想获得一个衡量两个随机分布的相似程度的指标,并在理想情况下使用它来确定它们是否会产生相同的分布。

执行此操作的最佳算法是什么?

【问题讨论】:

  • 最好在stats.stackexchange.com上提问。
  • 如果它们产生的数字是同分布的,那么您就知道您期望的分布形状。
  • @Space_Cowboy - 不正确 - i.i.d.这是随机分布可以具有的属性,但它并不能告诉您有关分布的太多信息。例如,均匀随机数和正态随机数都可以有这个性质
  • @KennyTM:谢谢!不知道存在 - 会尝试一下,但无论哪种方式,我都渴望听到 StackOverflow 的消息,因为 a)我追求的是可实施的算法,而不是理论统计观点 b)那里的流量不多...... .
  • @mikera:许多similar 的问题已经在 Stats SE 得到解答。

标签: algorithm language-agnostic random statistics


【解决方案1】:

我想你会找到答案here

摘录:

测试随机数生成器
观察到的数据是否满足特定分布?
• 卡方检验
• Kolmogorov-Smirnov 检验
• 序列相关检验
• 两级测试
• K 分布
• 串行测试
• 光谱测试
......

另一部分:

串行相关测试
• 测试 2 个随机变量是否相互依赖
——它们的协方差是非零的吗?
——如果是,依赖。不是真的。

HTH!

【讨论】:

    【解决方案2】:

    在随机化算法中,主要关注的是Mean和Variance,Mode和其他一些因素也很重要,但是您可以生成太多的数字并比较它们相关的Mean和Variance,并检查它们的相似性。您还可以找到它们与其他函数(如高斯函数)的关系。 但您的案例最著名的测试是:

    如果您想要一个有限的数字(例如 生成的数字 % 大素数),您也可以使用 卡方检验

    【讨论】:

    • 谢谢 - 看起来 Kolmogorov Smirnov 方法可能正是我所需要的
    • @mikera,我想是的,我会在www-cs-faculty.stanford.edu/~uno/taocp.html 中阅读它。我不知道是哪一卷:D
    • 均值和方差是有用的统计数据,但不一定能很好地反映分布情况。
    • @walkytalky,所有常见的发行版都是基于这些东西的变体,但如果你有任何其他想法,我很乐意学习新的东西。
    • @AlixAxel,我们说心情,频率最高的项目计数。
    【解决方案3】:

    由于您无法就任一分布做出陈述,您可能需要进行非参数检验来比较(未知)分布。您可以使用 K-S 检验,但在查看应用程序时,请查看非参数统计信息。

    【讨论】:

      【解决方案4】:

      当您说比较两个分布时,并不清楚您想要的答案有多详细。例如,考虑这两个序列:

      RNG-A: 1111100000
      RNG-B: 1010101010
      

      由于均值和方差相同,它会以优异的成绩通过Kolmogorov–Smirnov test。然而,RNG-A 和 RNG-B 生成具有不同特征的序列是明显。根据您的情况,这可能是也可能不是问题。只要您了解所涉及的风险,就可以做出明智的决定。

      如果您真的想确保生成器相同,请查看 belisarius 回答中提供的链接。但是,这会将 RNG 与 已知 分布进行比较。就您而言,您不知道任何一种分布。虽然我认为您可以模拟 RNG-A 足够多次作为近似值。

      另一个有用的东西是 Diehard 测试。在 stats.SE 上查看question 的答案。

      【讨论】:

      • 我想我很高兴这两个被宣布为相同,因为我知道 RNG 是独立且同分布的(即没有序列相关性)。因此,如果它们得出相同的频率分布,它们是相同的。
      猜你喜欢
      • 2015-01-31
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 2021-06-03
      • 2018-05-20
      • 1970-01-01
      相关资源
      最近更新 更多