我一直在对 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% 的时间我都在这个平均范围内。我不认为我们可以称它为随机。
我该怎么做才能得到一个相当随机的数字。