Random.Next返回始终相同的值[重复]

这真的很奇怪,我不明白为什么会这样。在foreach循环中,我遍历A类集合,对于每个类,我都调用该Count()方法,其中r1r2数字是从范围[-1,1]中生成的。问题是

Random.Next每个实例返回相同的“随机”数字。当第一个实例的结果为0和-1时,后续实例将返回相同的结果。拜托,你能告诉我为什么会这样吗?另外,在每个A类实例中我都无法获得不同的结果。这是代码:

class a

{

Random rnd = new Random();

private void Count()

{

int r1 = rnd.Next(-1, 1);

int r2 = rnd.Next(-1, 1);

}

}

class b

{

List<a> listofA=new list<a>();

foreach (a ACLASS in listofA)

{

ACLASS.Count();

}

}

回答:

问题是您创建的Random类实例在时间上过于接近。

创建Random对象时,将使用系统时钟中的值作为对象的种子。如果创建的Random实例在时间上过于接近,则它们将全部使用相同的随机序列进行播种。

创建Random“ a”类的实例时,请创建一个对象并将其引用传递给构造函数,而不是Random为每个“ a”实例创建一个对象。

以上是 Random.Next返回始终相同的值[重复] 的全部内容, 来源链接: utcz.com/qa/416310.html

回到顶部