Нет: ноль получается в 4 случаях, единица и двойка — в 3. Число исходов 10 не делится на 3, поэтому простое взятие остатка создаёт modulo bias.
Откуда возникает перекос при генерации через остаток
Нет: ноль получается в 4 случаях, единица и двойка — в 3. Число исходов 10 не делится на 3, поэтому простое взятие остатка создаёт modulo bias.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Равномерно выбирается целое от 0 до 9, затем вычисляется x % 3. Равновероятны ли результаты 0, 1 и 2? Как убрать перекос?
Ответ
Нет: ноль получается в 4 случаях, единица и двойка — в 3. Число исходов 10 не делится на 3, поэтому простое взятие остатка создаёт modulo bias.
Отбрасывайте 9 и повторяйте выбор: на диапазоне 0–8 каждая группа имеет по три значения. Общий принцип — принимать диапазон длины, кратной числу нужных исходов. Для безопасности используйте подходящий криптографический генератор; устранение modulo bias само по себе не делает слабый генератор криптографически стойким.