有两个随机函数 f1(),f2()。
f1() 以概率 p1 返回 1,以概率 1-p1 返回 0。
f2() 以概率 p2 返回 1,以概率 1-p2 返回 0。
我想实现一个新函数 f3(),它以概率 p3(给定概率)返回 1,并以概率 1-p3 返回 0。在函数 f3() 的实现中,我们可以使用函数 f1() 和 f2(),但不能使用任何其他随机函数。
如果p3=0.5,一个实现的例子:
int f3()
{
do
{
int a = f1();
int b = f1();
if (a==b) continue;
// when reachs here
// a==1 with probability p1(1-p1)
// b==1 with probability (1-p1)p1
if (a==1) return 1;//now returns 1 with probability 0.5
if (b==1) return 0;
}while(1)
}
f3() 的这种实现将给出一个随机函数以 0.5 的概率返回 1,以 0.5 的概率返回 0。但是如何实现 p3=0.4 的 f3() 呢?我不知道。
我想知道,这个任务可能吗?以及如何实现 f3()?
提前致谢。