http://www.cnblogs.com/xuxu8511/archive/2012/08/15/2640378.html
解法很简单,但是要想到这种方法,吾等菜鸟应该勤加练习!
另:网上还有一种把BIASED-RANDOM和(1-BIASED-RANDOM)作为两个函数一起调用的方法感觉也不错,不过没这种简单!
思想如下:
设计生成一个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. 满足条件