假设有一个基础随机函数可以以概率P返回0,以概率(1-P)返回1,设计一个函数,以等概率返回0和1。
思路:连续调用两次基础随机函数,那么有四种结果:1、00概率为p*p;
2、11概率为(1-p)*(1-p);
3、10概率为(1-p)*p; 4、01概率为p*(1-p) 可以看到结果3和结果4是概率相等的。
function random() {
$a = basicRandom();
$b = basicRandom();
while (true) {
if($a==1 && $b==0){
return 1;
}elseif($a==0 && $b==1){
return 0
}else{
continue;
}
}
}