Unix システムの c で srandom() と random() を使用して乱数を生成しています。複数の RNG が必要です。同じシードを指定すると、それぞれが同じシーケンスを出力するはずです。また、それぞれの状態を保存して復元したいと思います。擬似コードの例を次に示します。
R1 = new_rng(5); //5 is the seed
R2 = new rng(5); //5 is the seed here, too.
a = R1.random();
b = R1.random();
d = R2.random(); //a == d
s1 = R2.get_state(); //save the state of R2
e = R2.random(); //b == e
R2.set_state(s1); //restore the state of R2
f = R2.random(); //b == f
どうすればいいですか?RNG が別のスレッドに分岐する場合があり、新しいスレッドを作成するときにも RNG の状態を複製する必要があります。