私のプログラムでは、大規模なデータセットのサンプリングに使用される独自のRNGを使用して、それぞれN個の個別のスレッドを実行する必要があります。結果を再現できるように、このプロセス全体に単一の値をシードできるようにする必要があります。
各インデックスのシードを単純に順次増やすだけで十分ですか?
現在、私は使用numpy
のRandomState
メルセンヌツイスターの擬似乱数生成器を使用しています。
以下のコードの抜粋:
# If a random number generator seed exists
if self.random_generator_seed:
# Create a new random number generator for this instance based on its
# own index
self.random_generator_seed += instance_index
self.random_number_generator = RandomState(self.random_generator_seed)
基本的に、ユーザーが入力したシード(存在する場合)から始め、インスタンス/スレッドごとに、実行中のインスタンスのインデックス(0からN-1)を順番に追加します。これが良い習慣なのか、これを行うより良い方法があるのかはわかりません。