一随机数以概率 p 生成0,以概率(1-p)生成1,怎样生成等概率的 0 和 1 ?

来源:互联网 发布:mac系统软件免费网站 编辑:程序博客网 时间:2024/04/30 00:57

招聘网站评价

这涉及到概率 分布的内容了,其实也简单只要能找到一个概率为1/2p的函数就解决了.

另外还有一个比较方便的实现:
一随机数f(x)以概率 p 生成0,
那么设g(x)=f(x)>0?0:1;  刚g(x)以概率 1-p 生成0.
所以f(x),g(x)同时生成0的概率为p(1-p)等于同时生成1的概率.
得等概率随机数
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,重新生成随机数
  }
}

上面第3步的概率为p^2+(1-p)^2

原创粉丝点击