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

来源:互联网 发布:slim nginx 编辑:程序博客网 时间:2024/05/16 04:52

http://blog.csdn.net/yulin11/article/details/4569137


这涉及到概率 分布的内容了,其实也简单只要能找到一个概率为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,重新生成随机数 
  } 


原创粉丝点击