参见英文答案 >
Random number generator only generating one random number9个
我使用Random来生成一个随机数序列.我只构造一次随机对象,然后在循环内生成随机值(其中300个).问题是,一旦我获得了所有的值并对它们进行了排序,我就会发现它们中的一些是相同的和/或顺序的:我生成的数字从0到50000.
我使用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);