給定乙個隨機函式可以按照0.5的概率返回true, 要求實現乙個函式返回任意概率的true
bool helper()
bool prob(double p, bool exp)
1.如果你想求0
.4的概率true,那麼就等於你求0
.6的概率false。
2.如果你想求0.6
的概率false,那麼如果你從prob得到了false,你就可以返回false了,因
為prob的概率是0.5,小於0.6。
3.如果你從prob返回的是true,那麼你已
經用掉了0.5
的概率了,你只剩0.1
的概率了。那麼下一次call prob你需要的0.2
概率的false。
這樣你就是按照0.6
的概率去得false的
0.5+0.5*0.2=0.6
等概率隨機函式的實現
題目 已知隨機函式rand 以p的概率產生0,以1 p的概率產生1,現在要求設計乙個新的隨機函式newrand 使其以1 n的等概率產生1 n之間的任意乙個數。解決思路 可以通過已知隨機函式rand 產生等概率產生0和1的新隨機函式rand 然後呼叫k k為整數n的二進位制表示的位數 次rand 函...
等概率隨機函式的實現
題目 已知隨機函式rand 以p的概率產生0,以1 p的概率產生1,現在要求設計乙個新的隨機函式newrand 使其以1 n的等概率產生1 n之間的任意乙個數。解決思路 可以通過已知隨機函式rand 產生等概率產生0和1的新隨機函式rand 然後呼叫k k為整數n的二進位制表示的位數 次rand 函...
等概率隨機函式的實現
解決思路 可以通過已知隨機函式rand 產生等概率產生0和1的新隨機函式rand 然後呼叫k k為整數n的二進位制表示的位數 次rand 函式,得到乙個長度為k的0和1序列,以此序列所形成的整數即為1 n之間的數字。注意 從產生序列得到的整數有可能大於n,如果大於n的話,則重新產生直至得到的整數不大...