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

}

F(X):

P(F(X)=1)=1-P;

P(F(X)=0)=P;

G(X):

P(G(X)=0)=P(F(X)>0)=1-P;

P(G(X)=1)=P(F(X)<=0)=P;

P(G(X)=0&& F(X)=0)=(1-P) * P;

P(G(X)=1&& F(X)=1)=P * (1-P);

P(G(X)=1&& F(X)=0)=P* P;

P(G(X)=0&& F(X)=1)=(1-P) * (1-P);

Z(X)

{

X=G(X)+F(X);

IF(X==0) RETURN 0;

ELSE IF(X==2) RETURN 1;

ELSE RETURN Z(X);

}

@以1/N产生1-N的平均分布

Y(X)

{

int k=log2(N)+1;//bit位数

int res=0;

for(int i=0;i<k;++i) IF(Z(X)==1) res = res | 1<<i;

IF(res>N) RETURN Y(X);

}

给你等概率发生器,写出一个以概率p输出1,概率1-p输出0的发生器

T(p)

{

If(p>0.5){

If(Z(X)==1) return 1;

Else return T(1-2*(1-p));

} else{

If(Z(X)==0) return 0;

Else return T(2p);

}

}

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

  1. 概率题:掷一枚不均匀的硬币,正面概率为0.7,反面的概率为0.3,如何最高效地获得一个概率为0.5的事件?

    题目 掷一枚不均匀的硬币,正面概率为0.7,反面的概率为0.3,如何最高效地获得一个概率为0.5的事件? 解答: 丢两次.正反的概率和反正的概率各为 0.3 * 0.7 = 0.21,正正和反反的情况 ...

  2. 生成特定分布随机数的方法:Python seed() 函数numpy scikit-learn随机数据生成

    描述 seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数.. 语法 以下是 seed() 方法的语法: import random random.seed ( [x] ...

  3. python从random生成列表_详解Python利用random生成一个列表内的随机数

    详解Python利用random生成一个列表内的随机数 首先,需要导入random模块: import random 随机取1-33之间的1个随机数,可能重复: random.choice(range ...

  4. 天津大学计算机学院杜朴风,PseAAC-Builder 2.0 一种从蛋白质序列数据快速生成伪氨基酸组分表示的软件.doc...

    文档介绍: PseAAC-Builder2.0:一种从蛋白质序列数据快速生成伪氨基酸组分表示的软件#杜朴风*5101520(天津大学,计算机科学与技术学院)摘要:本文描述了一种用于快速的将大规模蛋白质 ...

  5. Apollo6.0代码Lattice算法详解——Part5: 生成横纵向轨迹

    Apollo6.0代码Lattice算法详解--Part5: 生成横纵向轨迹 0.前置知识 1.涉及主要函数 2.函数关系 3.部分函数代码详解 3.1 lattice_planner.cc中代码部分 ...

  6. 概率p输出1,概率1-p输出0,等概率输出0和1 【LeetCode】470. rand7()构造rand10() 系列变形(新浪、字节面试题)

    目录 1. 等概率输出0和1 1.1 题目描述 1.2 解题思路 & 代码 2. 以 1/N 的概率返回 1~N 之间的数 3. 给定函数rand5() 构造rand7() 或 rand7() ...

  7. python3.0什么时候出的_Python 3.X简史——记录3.0之后的重要更新

    Python 3.0在2008年12月3日正式发布,在之后又经历了多个小版本(3.1,3.2,3.3--),本文梳理Python 3.0之后的新特性.已更新到3.6版,会持续更新下去. 其实每个版本都 ...

  8. 【论文翻译】Auto-painter:基于条件Wasserstein生成性对抗网络的草图卡通形象生成

    Auto-painter: Cartoon image generation from sketch by using conditional Wasserstein generative adver ...

  9. 对抗生成网络学习(四)——WGAN+爬虫生成皮卡丘图像(tensorflow实现)

    一.背景 WGAN的全称为Wasserstein GAN, 是Martin Arjovsky等人于17年1月份提出的一个模型,该文章可以参考[1].WGAN针对GAN存在的问题进行了有针对性的改进,但 ...

最新文章

  1. SLAM学习--------相机位姿表示-李群李代数
  2. 如何在 Swift 语言下使用 iOS Charts API 制作漂亮图表?
  3. c语言迭代法求平方根_求平方根问题 (C++ 实现)
  4. C#:委托基础与事件
  5. docker 数据库 mysql_在Docker中体验数据库之MySql
  6. spring boot web 开发示例
  7. BZOJ 4602: [Sdoi2016]齿轮 dfs
  8. Python Tricks —— 计算 1+1/2+1/4+...=2
  9. Java编程的逻辑 (70) - 原子变量和CAS
  10. java模仿银行账务业务_一个银行转账业务模型分析:大魏Java记5-7
  11. 关于dsoframer VC++下的使用
  12. 经典Hive-SQL面试题及答案
  13. 6678-GPIO基础(1)
  14. 防止javascript脚本读取cookie信息
  15. Java Annotation自定义注解详解
  16. Google earth 生成研究区适量边界(研究区边界从哪来?)
  17. 数电课程设计——电子钟
  18. coursera无法播放视频
  19. 模型量化(6):Yolov5 QAT量化训练
  20. LeetCode--574. 当选者

热门文章

  1. VOTtoolkit的使用【3.调试方法】
  2. java学习第16天
  3. 0基础也能学!软件测试自学路线(附带学习资料)
  4. vue h5项目架构搭建
  5. iOS——armv7,armv7s,arm64详解
  6. mac下怎么删除mysql
  7. 一文读懂:支持向量机(SVM)非线性分类问题
  8. 【CTR预估】简单介绍
  9. Python3.X中的print
  10. latex审阅模式出现Missing \begin{document}错误