【发布时间】:2012-10-23 22:25:34
【问题描述】:
昨天我有一个面试问题,我无法完全回答:
给定一个具有完美 1:1 分布的函数 f() = 0 or 1,创建一个函数 f(n) = 0, 1, 2, ..., n-1,每个函数的概率为 1/n
如果n 是2 的自然幂,我可以想出一个解决方案,即使用f() 生成二进制数k=ln_2 n 的位。但这显然不适用于例如 n=5,因为这会生成我们不想要的 f(5) = 5,6,7。
有人知道解决办法吗?
【问题讨论】:
-
这里你的意思不是给定一个数字
n0 或 1,创建一个 f(n) = 0, 1, 2, ..., n - 1?跨度>