C# Random循环生成随机数重复问题解决方案

发布时间:2020年03月20日 阅读:210 次

一次为了写产生多个随机数时,写成了下面代码,然后发现产生的随机数都是重复的。

  for (int i = 1; i < 3; i++)
            {
                Random rnd2 = new Random();
                timu_default.Add(Math.Round((rnd2.Next(10, 100) / 11.1), 2).ToString("#0.00"));
                
            }


之所以会出现这样的情况是因为C#生成随机数和计算的时间有关系,如果计算时间太短就会造成这个问题。

所以解决问题方法如下

方法1:

for (int i = 1; i < 3; i++)
            {
                Random rnd2 = new Random();
                timu_default.Add(Math.Round((rnd2.Next(10, 100) / 11.1), 2).ToString("#0.00"));
                Thread.Sleep(100);
            }

但是测试了后,执行效率太低。不推荐!


方法2:

for (int i = 1; i < 3; i++)
            {
                Random rnd2 = new Random(Guid.NewGuid().GetHashCode());
                timu_default.Add(Math.Round((rnd2.Next(10, 100) / 11.1), 2).ToString("#0.00"));
            }

完美解决!

Tag:C# 随机数重复 C#产生多个随机数时重复
相关文章

发表评论: