一次为了写产生多个随机数时,写成了下面代码,然后发现产生的随机数都是重复的。
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")); }
完美解决!