Равномерность случайных чисел по модулю N

Один из распространенных способов выбора случайного числа в[0, n) это взять результатrand() по модулю n:rand() % n, Однако, даже если результаты возвращены доступнымиrand() реализация полностью унифицирована, не должныt существует проблема с однородностью результирующего[0, n) числа, когдаRAND_MAX + 1 не делит равномерно? Например. предполагатьRAND_MAX это 2, а п 2. Тогда из 3 возможныхrand() выводит: 0, 1 и 2, мы получаем 0, 1 и 0 соответственно, когда мы используем их по модулю n, Поэтому вывод не будет равномерным вообще.

Это реальная проблема на практике? Как лучше выбрать случайные числа в[0, n) равномерно вытекает изrand() вывод, желательно без какой-либо арифметики с плавающей запятой?

Ответы на вопрос(4)

Ваш ответ на вопрос