快速生成随机数-每毫秒多次

本文关键字:随机数 | 更新日期: 2023-09-27 18:24:52

我在使用System.Random时注意到,如果Next()在一毫秒内被调用不止一次,它会返回相同的数字(如果它有相同的参数)。我认为随机算法在某种程度上与系统的时间有关,并依赖于此。

我想在一毫秒内多次调用Next()——有没有办法做到这一点,希望使用相同的Random类?如果没有,我将感谢任何资源/其他方法来解决这个问题。

快速生成随机数-每毫秒多次

这是因为当初始化Random的新实例时,它会使用种子的系统时钟。如果你做两次,距离足够近,你最终会使用相同的种子,因此你会从两个实例中获得相同的随机数序列。

注释中已经提到的解决方案是实例化一个Random对象,然后对其重复调用Next(),每次都会得到一个新的随机数。

var val1 = new Random().Next();
var val2 = new Random().Next(); // quite likely val1 and val2 will be the same
var rnd = new Random();
var val3 = rnd.Next();
var val4 = rnd.Next(); // very unlikely val3 and val4 will be the same