System.Random r = new Random();
int s = r.Next();
int s = r.Next();
但是当我在做项目时,突然遇到一个大量使用随机数的时候,有时候产生的随机数很不随机,经常前后的随机数字都是一样的。到底怎么回事?
google了很久使用以下代码
System.Random r = new Random(uncheck((int)DateTime.Now.ticks));
int s = r.Next();
int s = r.Next();
效果也一样,查阅了MSDN,发现Random()默认就是使用时间作为随机发生器的种子的,在大量使用随机数的时候,ticks还没来得及改变,众所周知,现在我们常用的随机发生器都是伪随机数字,是需要种子的,在种子一样时,产生的随机序列是一样的,因此随机数也就不随机了。
找到了问题,我们对症下药,再每次取随机数之前,我们暂停一毫秒
System.Threading.Thread.Sleep(1);
这样,我们每次的随机种子都不一样了,这样得出的随机数会更随机。
完整代码:
System.Random random = new Random();
System.Threading.Thread.Sleep(1);
System.Threading.Thread.Sleep(1);