读书人

随机算法里的一路题

发布时间: 2012-10-12 10:17:04 作者: rapoo

随机算法里的一道题
现有BaseRandom()函数已知,且返回1的概率为p,返回0的概率为(1-p)。请你设计一个Random(),且返回1的概率为0.5,返回0的概率为0.5。并且分析算法复杂度。

[解决办法]

C/C++ code
for(;;){  int a = BaseRandom();  int b = BaseRandom();  if(a+b == 1)    return a;}
[解决办法]
C/C++ code
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;      }} 

读书人网 >C++

热点推荐