假设我有两个随机数发生器RNG-A和RNG-B,这样:
我想获得衡量两个随机分布的相似程度,并且理想情况下使用它来确定它们是否看起来产生相同的分布。
这样做的最佳算法是什么?
答案 0 :(得分:3)
我想你会找到答案here。
摘录:
测试随机数发生器
观测数据是否满足特定分布?
•卡方检验
•Kolmogorov-Smirnov检验
•串行相关测试
•两级测试
•K分布性
•串行测试
•光谱测试
.....
的
另一部分:
串行相关测试
•测试2个随机变量是否依赖
- 他们的协方差是非零的吗?
- 如果是的话,依赖。相反的不是真的
HTH!
答案 1 :(得分:2)
在随机化算法中主要关注的是均值和方差,同时模式和其他一些因素很重要,但是你可以生成太多的数字并比较它们的相关均值和方差,并检查它们的相似性。您还可以找到它们与其他函数(如高斯函数)的关系。 但对你的案件最有名的测试是:
如果您想拥有有限的数字(例如生成的数字%大素数),您也可以使用卡方检验 < / p>
答案 2 :(得分:0)
因为您无法对这两种分布做出声明,您可能需要进行非参数测试来比较(未知)分布。您可以使用K-S测试,但在查看应用程序时,请查看非参数统计信息。
答案 3 :(得分:-1)
当你说比较两个发行版时,你不清楚你想要的答案有多详细。例如,考虑这两个序列:
RNG-A: 1111100000
RNG-B: 1010101010
由于平均值和方差相同,它会以Kolmogorov–Smirnov test的颜色通过。然而,RNG-A和RNG-B产生具有不同特征的序列明显。根据您的情况,这可能是也可能不是问题。只要您了解所涉及的风险,您就可以做出明智的决定。
如果你真的想确保发电机是相同的,那么看看belisarius'答案中提供的链接。但是,这会将RNG与已知分布进行比较。在你的情况下,你不知道任何分布。虽然我认为你可以模拟RNG-A足够的时间作为开始的近似值。
另一个有用的东西是Diehard测试。请参阅stats.SE。
中的question的答案