Вчера у меня был этот вопрос интервью, на который я не мог полностью ответить:
Для функции 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
, которое мы не хотим.
Кто-нибудь знает решение?