Другие языки программирования и технологии

Язык си функция rand, не пойму почему так

Если взять остаток от деления случайное число на определённое число то получиться от нуля это я понял, но почему N-1 ?
Описание
Функция rand генерирует случайные числа, возвращает псевдослучайное целое число в диапазоне от 0 до RAND_MAX.

Это число генерируется алгоритмом, который возвращает последовательность псевдо-случайных чисел. Этот алгоритм использует своего рода «семя» — число, для создания серий случайных чисел. То есть, если семя всегда будет одно и то же, то сгенерированная последовательность чисел не будет меняться, исчезнет фактор стохастичности.

RAND_MAX это константа, определенная в . По умолчанию её значение может изменяться, в зависимости от реализации, но, как правило, макрос RAND_MAX меньше значения 32767 не бывает.

Типичный способ генерации псевдослучайных чисел в определенном диапазоне с использованием функции rand выполняется следующим образом:

(value % 100) - генерация чисел в диапазоне от 0 до 99
(value % 100 + 1) - генерация чисел в диапазоне от 1 до 100
(value % 30 + 1985) - генерация чисел в диапазоне от 1985 до 2014

Однако, использование операции остаток от деления не создает поистине равномерно распределенных случайных чисел в заданном диапазоне, но, как правило, такой способ генерации чисел является хорошим приближением для небольших диапазонов.
Игорь Кручинов
Игорь Кручинов
59 915
Лучший ответ
потому что остаток от деления всегда меньше делителя в данном случае делитель n. Иначе это уже не остаток.
N-1 Означает "взять значение порядкового номера последнего элемента с вычетом нуля":)
Иначе есть вероятность получить число, выходящее за пределы входного значения т. е "N".