写一个函数以概率p返回0?

时间:2011-09-22 07:08:09

标签: probability

函数f()返回0或1,每次0.5概率。

写一个函数g(),返回0,概率为p .. ??

假设给出p并且介于0和1之间。

1 个答案:

答案 0 :(得分:5)

如果您有权访问(伪)随机数生成器,则可以生成0到1之间的随机数。如果该数字低于p,则返回0,否则返回1.您没有在问题,但我会假设你对随机源的唯一访问是调用f()来一次得到一个。

考虑binary representation of p,例如:0.011010010110 ...同样调用f()重复生成无限长度的随机二进制数字序列x:0.0110110010101 ......

只要您确定x高于或低于p,您就完成了。您只需要根据需要多次调用f以确保结果。

p=0.011010...
x=0.011011...
         ^
         x>p: Stop and return 1.

我认为这是作业,所以我不会提供完整的源代码。