0

私は 300 の物から選ぶために約 1 億個の乱数を生成しています。それぞれ 10 回選択する 1,000 万の独立したインスタンス (異なるシード) を持つように設定する必要があります。目標は、各アイテムがほぼ同じ回数選択されるように、集計結果の不一致を非常に低くすることです。

問題は通常の prng にあり、一部の数字が他の数字よりも多く選択されます。(lcg と mersenne twister を試しました) 最も選ばれたものと最も選ばれなかったものとの差は、数千から 1 万になる可能性があります)均一な結果。これは、期間が非常に長く、おそらく 1 億では十分ではないためだと思います。理論的には、十分な数を選択すれば、結果は均一になるはずです。(期待値で落ち着くはず)

準乱数ジェネレーターである Sobol に切り替えたところ、1 インスタンスから 1 億のテストではるかに良い結果が得られました。(最多採点と最少採点の差は5程度) しかし、1000万回ずつ10回に分けると統一性がなくなり、prngと同様の結果になりました。Sobol はシーケンスに非常に敏感なようです。ランダムに先にスキップすると、均一性が低下します。

1,000 万の独立したインスタンスを組み合わせた場合でも、準ランダムのような低い不一致を維持できるランダム ジェネレーターのクラスはありますか? それとも理論上不可能なのでしょうか?私が今考えることができる 1 つの解決策は、1,000 万のインスタンス間で共有される 1 つの Sobol ジェネレーターを使用することです。これは事実上、1 つのインスタンスからの 1 億のテストと同じです。

4

1 に答える 1

0

シャッフルとSobolの適切な使用の両方で、必要に応じて均一性が得られるはずです。シャッフルは集計レベルで実行する必要があります(目的の集計頻度を持つグローバル100Mサンプルから開始し、ランダム性を導入するためにシャッフルし、最後に10個の値のインスタンスに分割します。各インスタンス内のシャッフルはグローバルに役立ちません) 。

しかし、これは追加レベルの均一性であり、実際には必要ない場合があります。ランダム性で十分な場合があります。まず、チェック自体をチェックします。十分なサンプルがあると、実際に有意な偏差が得られるのは奇妙に聞こえます(「カイ二乗検定」をチェックして、そのような有意性を認定します。同等に、「十分な」サンプルがいくつあるか)。したがって、最初の安全性チェックでは、独立した値を選択する場合は、2つのカテゴリから10個を選択する1,000万個のインスタンスとは異なる方法で単純化します。ほぼ二項分布になりますか?排他的ピッキングの場合、それは異なる分布です(超幾何分布ですが、チェックする必要があります)。次に、より多くのカテゴリに一般化して(多項分布)、後で問題を続行しても安全です。

于 2012-06-08T12:05:05.953 に答える