我已经做在随机类的一些测试和我已经使用以下代码:

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)和I改变迭代次数和我得到了以下结果:

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%的时间出现此平均范围内。我不认为我们可以接近调用它是随机的。

我能做些什么来获得相当的随机数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top