这真的很奇怪,我不明白为什么会这样。在foreach循环中,我遍历A类集合,对于每个类,我都调用该Count()方法,其中r1和r2数字是从范围[-1,1]中生成的。问题是 Random.Next每个实例返回相同的“随机”数字。当第一个实例的结果为0和-1时,后续实例将返回相同的结果。拜托,你能告诉我为什么会这样吗?另外,在每个A类实例中我都无法获得不同的结果。这是代码:
Count()
r1
r2
Random.Next
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实例在时间上过于接近,则它们将全部使用相同的随机序列进行播种。
创建Random“ a”类的实例时,请创建一个对象并将其引用传递给构造函数,而不是Random为每个“ a”实例创建一个对象。