随机算法里的一道题
现有BaseRandom()函数已知,且返回1的概率为p,返回0的概率为(1-p)。请你设计一个Random(),且返回1的概率为0.5,返回0的概率为0.5。并且分析算法复杂度。
[解决办法]
for(;;){ int a = BaseRandom(); int b = BaseRandom(); if(a+b == 1) return a;}
[解决办法]
while(1){ int a = BaseRandom(); int b = BaseRandom(); if(a+b==1) return a; else{ int c= BaseRandom(); int d= BaseRondom(); if( c+b==1) return c; else{ if( a+b+c+d == 2) return a; }}