Next总是返回相同的值

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();
 }}


不负相思意
浏览 395回答 3
3回答

哆啦的时光机

您正在创建一个新的实例Random非常接近(您的循环非常紧),因此每个实例都有效地使用了相同的种子值。更好的方法是创建一个实例并将其传递给Count方法。您很难理解这一点,但是为了完整起见,我将在这里包含它:这个MSDN有这方面的细节,但基本上您的问题是兰多,下方法生成:大于或等于minValue且小于maxValue的32位有符号整数;也就是说,返回值的范围包括minValue,但不包含maxValue。如果minValue等于maxValue,则返回minValue。因此,您的电话将返回-1或0。
打开App,查看更多内容
随时随地看视频慕课网APP