这对我来说有点奇怪。我相信我会很快习惯它,但我只是想知道为什么会这样做。
答案 0 :(得分:6)
原因1)maxValue - minValue
给出了范围内可能的项目数,因此您可以使用以下代码:
var randomItemFromArray = MyArray[random.Next(0, MyArray.Length)];
如果上限是包含的,那么这样做会看起来有点笨重/奇怪。
原因2)编码更容易
原因3)当使用浮点时,它确保了均匀的可能性 -
答案 1 :(得分:4)
想象一下,你有几个范围,例如
我们必须得到第二范围的随机值,我们应该做的全部
random.Next(100, 500);
即。第一个参数是范围开始,第二个参数是 next 范围开始; 如果范围复杂,这非常方便:我们必须知道每个地方 范围开始(我们不需要计算完全包含上边界,但可以说"向上,但不包括下一个范围")。例如。我们想在2016年2月获得随机时刻(最多第二个):
DateTime start = new DateTime(2016, 2, 1);
// Please notice how much easier it is to put "1 Mar" than "29 Feb 23:59:59"
DateTime startNext = new DateTime(2016, 3, 1);
// Please notice: just subtraction
DateTime random = start +
TimeSpan.FromSeconds(random.Next((startNext - start).TotalSeconds));