上一篇文中说道f1()函数会等概率的返回 1 ~ 5函数。
那么现在还有一个新的函数,以固定概率的返回0,1(但不是等概率),也当做一个黑盒函数,你不知道具体的概率是多少,如何利用它返回等概率的0,1?
这个函数就是哪个黑盒函数,会返回0,1,但你并不知道确切的概率,如何利用它返回等概率0,1?
public static int a() {
return Math.random() < 0.67 ? 0 : 1;
}
循环两次,如果while中的循环和do中的循环结果一样(两次0,0或者2次1,1)就不要这次的结果,再次循环,只要结果是0,1或者1,0的结果,这样就会得到等概率0,1的函数。
public static int b() {
int num = 0;
do {
num = a();
} while (num == a());
return num;
}