【发布时间】:2009-12-31 19:45:24
【问题描述】:
您有一个有偏随机数生成器,它以概率 p 生成 1,以概率 (1-p) 生成 0。你不知道 p 的值。使用它可以生成一个无偏随机数生成器,它以 0.5 的概率生成 1,以 0.5 的概率生成 0。
注意:这个问题是 Cormen, Leiserson, Rivest, Stein 的 Introduction to Algorithms 中的一个练习题。(clrs)
【问题讨论】:
-
我猜答案与使用偏置生成器一次标准方式和一次作为反函数有关,因此您的 p 概率为 0 一次和 (1-p) 概率为a 0 第二次迭代并混合两个结果以平衡分布。我不知道它背后的确切数学原理。
-
Eric- 是的,如果你做了 (rand() + (1-rand()))/2,你可以合理地期望得到一个公正的结果。请注意,在上面你应该调用 rand() 两次——否则你总是得到 .5
-
@JohnE:基本上我就是这么想的,但这不会让你得到一个直接的 0 或 1,这是要求的。我认为 pau 的回答一针见血。
-
@Eric。 Hrm-好点。你还不能做类似 (rand() xor !rand()) 的事情吗? (假设我们将 1 和 0 视为布尔值)
-
这看起来与我最近提出的问题完全相反:stackoverflow.com/questions/2075912/…
标签: algorithm random probability clrs