给定一个以p概率产生0,以1-p概率产生1的随机函数RandomP::f(),p是固定的值,但你并不知道是多少。除此之外也不能使用任何额外的随机机制,请用RandomP::f()实现等概率随机产生0和1的随机函数。
class RandomP {
public:
static int f();
};
class Random01 {
public:
// 用RandomP::f()实现等概率的01返回
int random01() {
while(1)
{
int n1=RandomP::f();
int n2=RandomP::f();
if(n1==1&&n2==0)
return 1;
else if(n1==0&&n2==1)
return 0;
else
continue;
}
}
};