Подтвердить что ты не робот

С# Random.Next - никогда не возвращает верхнюю границу?

random.Next(0,5)

Он никогда не возвращает 5 (но иногда возвращает 0.) Почему? Я думал, что это только граничные значения, которые можно вернуть. Благодаря

4b9b3361

Ответ 1

maxValue для верхней границы метода Next() эксклюзивный - диапазон включает minValue, maxValue-1 и все числа между ними.

Ответ 3

Прямо из документации:

 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 никогда не встречаются).

Ответ 4

Хороший способ запомнить это как максимальное количество чисел, из которых оно принимает случайное число. Таким образом, random.Next(0,2) означает, что он принимает случайное из 2 чисел, начиная с 0: 0 и 1.

Ответ 5

Когда вы просто смотрите в Google на "С# random" и следуете первым ссылкам на метод желания, который вы получаете здесь: http://msdn.microsoft.com/EN-US/library/aa329893 (v = vs .71).aspx

И нет никакого намека на исключительность верхней границы. Они, должно быть, обнаружили ошибку в коде и скорректировали ее с документацией.

Поэтому при просмотре документации важно всегда проверять версию фреймворка. Даже при работе со старыми версиями фреймворка стоит взглянуть на новую документацию.