为了账号安全,请及时绑定邮箱和手机立即绑定

Next总是返回相同的值

Next总是返回相同的值

C#
不负相思意 2019-08-03 07:03:33
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();  }}
查看完整描述

3 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

您正在创建一个新的实例Random非常接近(您的循环非常紧),因此每个实例都有效地使用了相同的种子值。

更好的方法是创建一个实例并将其传递给Count方法。

您很难理解这一点,但是为了完整起见,我将在这里包含它:

这个MSDN有这方面的细节,但基本上您的问题是兰多,下方法生成:

大于或等于minValue且小于maxValue的32位有符号整数;也就是说,返回值的范围包括minValue,但不包含maxValue。如果minValue等于maxValue,则返回minValue。

因此,您的电话将返回-1或0。




查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 384 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信