读书人

算法导论上的有关问题

发布时间: 2012-02-08 19:52:21 作者: rapoo

算法导论上的问题
Suppose u have a procedure Biased-Random outputs 1 with some probability p and 0 with probability 1-p.Give an algorithm that uses Biased-Random returns unbiased answer,that is, 0 or 1 with the probability 1/2?

[解决办法]
只输出一个字符:
输出1的概率是p
输出0的概率是1-p

连续输出两个字符:
输出11的概率是p^2
输出00的概率是(1-p)^2
输出01的概率是p(1-p)
输出10的概率是(1-p)p

可以看出输出01和10的概率是相同的
那么算法可以这样写:
while(1)
{ 用biased随机生成两个值
if(这两个值是‘10‘)输出’1‘ break;
if(这两个值是’01‘)输出’0‘ break;
}

读书人网 >软件架构设计

热点推荐