2011-09-22 68 views

回答

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. 

我認爲這是作業,所以我不會給出完整的源代碼。