在网上看到百度拼多多的面试题,下面这道题是一面的笔试题。
题:给一个函数,返回 0 和 1,概率为 p 和 1-p,请你实现一个函数,使得返回 01 概率一样。
思路:连续调用两次基础随机函数,那么有四种结果:
1、00概率为p*p;
2、11概率为(1-p)*(1-p);
3、10概率为(1-p)*p;
4、01概率为p*(1-p) 可以看到结果3和结果4是概率相等的。
public class SameProbability {
/**
* 生成0的概率为p,生成1的概率为1-p。
*
* 生成0 1 概率为p(1-p)
* 生成1 0概率为(1-p)p
* 则相等的
*/
public static int getZeroOrOneSameProbability() {
Random ra =new Random();
while (true) {
int i = ra.nextInt(10);
int j = ra.nextInt(10);
if (i == 0 && j == 1) {
return 1;
}else if (i == 1 && j == 0) {
return 0;
}else{
continue;
}
}
}
public static void main(String[] args) {
int result = getZeroOrOneSameProbability();
System.out.println(result);
}
}