c# – 随机而不是随机

前端之家收集整理的这篇文章主要介绍了c# – 随机而不是随机前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Random number generator only generating one random number9个
我使用Random来生成一个随机数序列.我只构造一次随机对象,然后在循环内生成随机值(其中300个).问题是,一旦我获得了所有的值并对它们进行了排序,我就会发现它们中的一些是相同的和/或顺序的:我生成的数字从0到50000.

这是我的脚本:

Random rnd = new Random();
for (int n=0; n < 300; n++)
{
    int RndNumber = rnd.Next(0,50000);
    System.Threading.Thread.Sleep(3);
}

有人可以知道为什么会发生这种情况,我该如何改进它以使其更随机

解决方法

作为你偶然看到重复的原因的解释,Jason’s answer是正确的.

如果你想要的是300个不同的随机数,那么这样的东西怎么样?

static IEnumerable<int> GetRandoms(int min,int max)
{
    var rand = new Random();
    while (true)
    {
        yield return rand.Next(min,max);
    }
}

var distinctRandoms = GetRandoms(0,50000).Distinct().Take(300);

猜你在找的C#相关文章