2016-08-12 42 views

回答

6

原因1)maxValue - minValue给出的范围内尽可能项目的数量,这样你就可以像这样使用代码:

var randomItemFromArray = MyArray[random.Next(0, MyArray.Length)]; 

要做到这一点,如果上限是包容看起来有点笨重/奇。

原因2)这是比较容易的代码

原因3)它使用浮点时保证了甚至蔓延的可能性 -

Exclusive upper bound in random number range更多信息

4

试想一下,你有几个范围,例如从

  • 开始0
  • 开始从100(范围的利息)从500(下一个范围)
  • 开始从1000

  • 开始,我们必须得到一个随机值从第二个范围,我们应该做的全部

    random.Next(100, 500); 
    

    ie 1st ar gument是范围开始,第二个是下一个范围开始; 这是非常方便的,如果范围是复杂:首先我们要了解每个 范围开始(我们不需要计算确切的包容性上边界,但可以说“但不包括下一个范围”) 。例如。我们想在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)); 
    
  • 相关问题