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

Wil*_*son 1 c# random milliseconds

我注意到,在使用System.Random时,如果Next()在一毫秒内调用多次,则返回相同的数字(如果它具有相同的参数).我假设随机算法以某种方式涉及系统的时间,并且依赖于此.

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

Jon*_*n G 6

这是因为当您初始化它的新实例时,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
Run Code Online (Sandbox Code Playgroud)