请教一个概率问题 10
假设一个函数f(),只返回0和1,返回0的概率为p,返回1的概率为1-p利用f()设计出一个新的函数g(),以50%的设计出一个新的函数g(),以50%的返回0和1...
假设一个函数f(),只返回0和1,返回0的概率为p,返回1的概率为1-p 利用f()设计出一个新的函数g(),以50%的
设计出一个新的函数g(),以50%的返回0和1 展开
设计出一个新的函数g(),以50%的返回0和1 展开
1个回答
展开全部
可以设g(x)=f(x)>0?0:1; 于是g(x)以概率 1-p 生成0.
由此f(x),g(x)同时生成0的概率为p(1-p),同时生成1的概率也是 p(1-p), 两者相等。
于是
function g(x){
int v=f(x)+g(x);
if(v==0){
return 0; //1.f(x)g(x)同时为0
else if(v==2){
return 1; //2.f(x)g(x)同时为1
}else{
g(x); //3.f(x)g(x)一个为0一个为1,重新生成随机数
}
}
最后生成0和1 的概率分别为p^2+(1-p)^2=1/2
由此f(x),g(x)同时生成0的概率为p(1-p),同时生成1的概率也是 p(1-p), 两者相等。
于是
function g(x){
int v=f(x)+g(x);
if(v==0){
return 0; //1.f(x)g(x)同时为0
else if(v==2){
return 1; //2.f(x)g(x)同时为1
}else{
g(x); //3.f(x)g(x)一个为0一个为1,重新生成随机数
}
}
最后生成0和1 的概率分别为p^2+(1-p)^2=1/2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询