Random.Next返回始终相同的值[重复]
这真的很奇怪,我不明白为什么会这样。在foreach循环中,我遍历A类集合,对于每个类,我都调用该Count()
方法,其中r1
和r2
数字是从范围[-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