random.Next(0,5)
它从不返回5(但有时返回0。)为什么?我认为这些只是可以返回的边界值。谢谢
random.Next(0,5)
它从不返回5(但有时返回0。)为什么?我认为这些只是可以返回的边界值。谢谢
Answers:
的maxValue
在上界Next()
方法是排他性-the范围包括minValue
,maxValue-1
,以及两者之间的所有数字。
array[random.Next(0, array.Length)]
该文件称,上限是排斥的。互斥意味着它不包含在可能的返回集中。在0 <= x < 5
这种情况下,采用更数学的表示法。
minValue
而不是maxValue
?
minValue
= maxValue
。在这里,如果不要紧minValue
或maxValue
返回,因为他们是平等的。 minValue <= x < maxValue
是不正确的。如果minValue
= maxValue
= 0,则返回x = 0,并且0 <0不是true。
直接来自文档:
Summary:
Returns a random number within a specified range.
Parameters:
minValue:
The inclusive lower bound of the random number returned.
maxValue:
The exclusive upper bound of the random number returned. maxValue must be
greater than or equal to minValue.
Returns:
A 32-bit signed integer greater than or equal to minValue and less than maxValue;
that is, the range of return values includes minValue but not maxValue. If
minValue equals maxValue, minValue is returned.
如果查看参数,您将看到这minValue
是包含的(这就是您的0出现的原因)和maxValue
唯一的(您的5从未出现)的原因。
当您只是在Google中查找“ c#random”并遵循第一个链接到欲望的方法时,您会获得以下信息:http : //msdn.microsoft.com/zh-cn/library/aa329893(v=vs.71)。 aspx
而且没有关于上限的排他性的暗示。他们必须在代码中找到错误,并通过文档进行了更正。
因此,重要的是在查看文档时始终检查框架的版本。即使使用旧版本的框架,也值得一看新的文档。