私は Random クラスでいくつかのテストを行っており、次のコードを使用しました。
while (x++ <= 5000000)
{
y = rnd.Next(1, 5000000);
if (!data.Contains(y))
data.Add(y);
else
{
Console.WriteLine("Cycle {2}: Repetation found for number {0} after {1} iteration", y, x, i);
break;
}
}
rnd の最大制限 (つまり 5000000) を変更し続け、反復回数を変更したところ、次の結果が得られました。
1) if y = rnd.Next(1, 5000) : The average is between 80 to 110 iterations
2) if y = rnd.Next(1, 5000000) : The average is between 2000 to 4000 iterations
3) if y = rnd.Next(1, int.MaxValue) : The average is between 40,000 to 80,000 iterations.
なぜこれらの平均値を取得しているのか、つまり、各値を 10 回チェックしたうち、80% の確率でこの平均範囲内に収まっています。ランダムに近いとは言えないと思います。
かなり乱数を取得するにはどうすればよいですか。