代码之家  ›  专栏  ›  技术社区  ›  mikera

确定两个随机数生成器之间的相似性

  •  5
  • mikera  · 技术社区  · 14 年前

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

    • 当调用它们时,它们都会产生随机的、非无限的浮点数
    • 生成的随机数是独立的,且分布相同(即rng的输出与它们以前生成的所有数据无关)
    • 我不能保证分配的形状

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

    最好的算法是什么?

    4 回复  |  直到 14 年前
        1
  •  2
  •   Saeed Amiri    12 年前

    在随机化算法中主要关注的是均值和方差,模式和其他一些因素也很重要,但是你可以生成太多的数并比较它们的相关均值和方差,并检查它们的相似性。也可以找到它们与其他函数(如高斯函数)的关系。

    你也可以用 如果你想要一个有限的数字(例如 生成数 % )

        2
  •  3
  •   Dr. belisarius    14 年前

    我想你会找到答案的 here .

    测试随机数生成器

    卡方检验
    Kolmogorov-Smirnov检验
    串行相关测试

    K-分布性
    串行测试

    .....

    另一部分:

    串行相关测试

    它们的协方差是非零的吗?
    如果是,依赖。相反不是真的。

    啊!

        3
  •  0
  •   Grembo    14 年前

        4
  •  -1
  •   Community CDub    8 年前

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

    RNG-A: 1111100000
    RNG-B: 1010101010
    

    由于均值和方差是相同的,它将通过 Kolmogorov–Smirnov test 明显的 RNG-A和RNG-B产生具有不同特征的序列。根据你的情况,这可能是问题,也可能不是问题。只要你知道其中的风险,你就可以做出明智的决定。

    已知的 分配。在你的情况下,你不知道任何一个分布。虽然我认为你可以模拟RNG足够的时间作为一个近似的开始。

    另一个有用的东西是顽固的测试。看看答案 question