2016-08-12 3 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

и мы должны получить случайное значение от 2-го диапазона, все, что мы должны сделать

random.Next(100, 500); 

ie 1st ar gument - пуск диапазона, а второй - следующий начало диапазона; это очень удобно, если диапазон complex: все, что мы должны знать, где начинается каждый диапазон (нам не нужно вычислять точная включенная верхняя граница, но может сказать «вверх, но не включая следующий диапазон») , Например. мы хотим получить случайный момент (до второго) в феврале 2016 года:

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