今日、私の友人は、生成された疑似乱数を使用して疑似乱数ジェネレーターのシードを複数回設定して、「物事をよりランダム化する」ことを考えていました。
C#の例:
// Initiate one with a time-based seed
Random rand = new Random(milliseconds_since_unix_epoch());
// Then loop for a_number_of_times...
for (int i = 0; i < a_number_of_times; i++)
{
// ... to initiate with the next random number generated
rand = new Random(rand.Next());
}
// So is `rand` now really random?
assert(rand.Next() is really_random);
しかし、これにより、疑似乱数ジェネレーターに繰り返しシードが使用される可能性が高くなる可能性があると考えていました。
これは
- 物事をよりランダム化する、
- 使用される特定の数のシードをループさせる、または
- ランダム性には何もしません(つまり、増加も減少もしません)?
疑似乱数ジェネレーターの専門家が、友人を説得できるように詳細な説明をしてくれませんか?いくつかの疑似乱数ジェネレーターアルゴリズムの詳細を説明する回答を見ていただければ幸いです。