以未知概率返回True或False
#题目
一个随机函数以一个未知得概率返回true或false;然后让你用这个函数写一个函数以百分之50得概率返回true和false。
#思路
未知函数返回true的概率是k,返回false的概率是1-k。那么两次调用未知函数,都为true的概率是k*k,都为false的概率是(1-k)(1-k)。而第一次true第二次false的概率和第一次false第二次true的概率相同,所以可以实现五五开。
//未知概率的函数
public boolean unknown(){
//未知概率返回true或false。
}
public boolean get(){
boolean a=unknown();
boolean b=unknown();
if(a^b==false)
get();//再来一次
else
return a;
}