Создание генератора случайных чисел из броска монеты
Вчера у меня был этот вопрос интервью, который я не могТ полностью ответить:
Учитывая функциюf() = 0 or 1
с идеальным распределением 1: 1, создайте функциюf(n) = 0, 1, 2, ..., n-1
каждый с вероятностью 1 / n
Я мог бы придумать решение для, если n является естественной степенью 2, то есть использоватьf()
генерировать биты двоичного числаk=ln_2 n
, Но это, очевидно, нескажем, n = 5, так как это приведет кf(5) = 5,6,7
чего мы не хотим.
Кто-нибудь знает решение?