假设有一个基础随机函数可以以概率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;
}
}
}