粗一想,还不知道怎么下手。。
思想如下:
设计生成一个2位二进制的数,用BIASED-RANDOM,只有四种结果:00,01,10,11.
因为生成0和1的概率不一样,但是01和10的概率是一样的。如果不处理00,11的输出,只输出01,10的输出,显然,其概率都是1/2。
代码简单:
int RANDOM()
x = BIASED-RANDOM();
y = BIASED-RANDOM();
if(x==0 && y == 1)
return 0;
if(x== 1 && y ==0)
return 1;
// 其生成0和1的概率都是1/2. 满足条件