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

Paw*_*ani 0 probability

函数f()返回0或1,每个概率为0.5.

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

假设p被给出并且位于0和1之间.

Mar*_*ers 5

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

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

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

p=0.011010...
x=0.011011...
         ^
         x>p: Stop and return 1.
Run Code Online (Sandbox Code Playgroud)

我认为这是作业,所以我不会给出完整的源代码.