组合随机发生器的不同实例,但仍保持低差异

时间:2012-06-02 15:58:41

标签: random generator prng

我正在生成大约1亿个随机数来从300件事中挑选。我需要进行设置,以便我有1000万个独立实例(不同种子),每个实例选择10次。目标是使汇总结果具有非常低的差异,因为每个项目的选择次数相同。

问题在于常规的prng,有些数字比其他数字更多。 (试过lcg和mersenne twister)最挑选和最少挑选的差异可能是几千到一万)使用线性一致性发生器和mersenne twister,我也尝试用1个实例挑选1亿次并且也没有产生统一的结果。我猜这是因为时间很长,也许1亿还不够大。从理论上讲,如果我选择足够的数字,结果应该达到一致性。 (应该达到预期值)

我切换到了Sobol,一个quasirandom发生器,并且通过1次实例测试得到了1亿个更好的结果。 (大多数挑选和最少挑选之间的差异大约是5)但是将它们分成10万个实例,每次10次,均匀性丢失了,我得到了与prng类似的结果。 Sobol似乎对序列非常敏感 - 随意跳过会减少一致性。

是否有一类随机生成器即使在组合了1000万个独立实例时也能保持类似于随机数的低差异?或者这在理论上是不可能的?我现在能想到的一个解决方案是使用1个Sobol生成器,该生成器在1000万个实例中共享,因此它实际上与1个实例测试中的1亿个相同。

1 个答案:

答案 0 :(得分:0)

Sobol的改组和正确使用都可以根据需要提供均匀性。改组需要在聚合级别上进行(从具有所需聚合频率的全局100M样本开始,然后将其随机化以引入随机性,最后拆分为10个值实例;在每个实例内进行改组对全局没有帮助,如您所述)

但这是一个额外的统一级别,你可能不需要这样:随机性可能就足够了。 首先,我会检查检查本身,因为听起来很奇怪,如果有足够的样本,你真的会得到显着的偏差(检查“卡方检验”以确定这种重要性,或者相当于有多少是“足够”的样本)。因此,对于第一次安全检查:如果您选择独立的值,那么对10个实例进行不同的简化,选择10个2类别:您是否得到大约二项分布?对于独家选择,它是一个不同的分布(超几何iirc,但需要检查)。然后概括为更多类别(多项分布),只有在以后才能安全地继续处理您的问题。