一随机数以概率 p 生成0,以概率(1-p)生成1,怎样生成等概率的 0 和 1
这涉及到概率 分布的内容了,其实也简单只要能找到一个概率为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相关推荐
- 概率题:掷一枚不均匀的硬币,正面概率为0.7,反面的概率为0.3,如何最高效地获得一个概率为0.5的事件?
题目 掷一枚不均匀的硬币,正面概率为0.7,反面的概率为0.3,如何最高效地获得一个概率为0.5的事件? 解答: 丢两次.正反的概率和反正的概率各为 0.3 * 0.7 = 0.21,正正和反反的情况 ...
- 生成特定分布随机数的方法:Python seed() 函数numpy scikit-learn随机数据生成
描述 seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数.. 语法 以下是 seed() 方法的语法: import random random.seed ( [x] ...
- python从random生成列表_详解Python利用random生成一个列表内的随机数
详解Python利用random生成一个列表内的随机数 首先,需要导入random模块: import random 随机取1-33之间的1个随机数,可能重复: random.choice(range ...
- 天津大学计算机学院杜朴风,PseAAC-Builder 2.0 一种从蛋白质序列数据快速生成伪氨基酸组分表示的软件.doc...
文档介绍: PseAAC-Builder2.0:一种从蛋白质序列数据快速生成伪氨基酸组分表示的软件#杜朴风*5101520(天津大学,计算机科学与技术学院)摘要:本文描述了一种用于快速的将大规模蛋白质 ...
- Apollo6.0代码Lattice算法详解——Part5: 生成横纵向轨迹
Apollo6.0代码Lattice算法详解--Part5: 生成横纵向轨迹 0.前置知识 1.涉及主要函数 2.函数关系 3.部分函数代码详解 3.1 lattice_planner.cc中代码部分 ...
- 概率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() ...
- python3.0什么时候出的_Python 3.X简史——记录3.0之后的重要更新
Python 3.0在2008年12月3日正式发布,在之后又经历了多个小版本(3.1,3.2,3.3--),本文梳理Python 3.0之后的新特性.已更新到3.6版,会持续更新下去. 其实每个版本都 ...
- 【论文翻译】Auto-painter:基于条件Wasserstein生成性对抗网络的草图卡通形象生成
Auto-painter: Cartoon image generation from sketch by using conditional Wasserstein generative adver ...
- 对抗生成网络学习(四)——WGAN+爬虫生成皮卡丘图像(tensorflow实现)
一.背景 WGAN的全称为Wasserstein GAN, 是Martin Arjovsky等人于17年1月份提出的一个模型,该文章可以参考[1].WGAN针对GAN存在的问题进行了有针对性的改进,但 ...
最新文章
- SLAM学习--------相机位姿表示-李群李代数
- 如何在 Swift 语言下使用 iOS Charts API 制作漂亮图表?
- c语言迭代法求平方根_求平方根问题 (C++ 实现)
- C#:委托基础与事件
- docker 数据库 mysql_在Docker中体验数据库之MySql
- spring boot web 开发示例
- BZOJ 4602: [Sdoi2016]齿轮 dfs
- Python Tricks —— 计算 1+1/2+1/4+...=2
- Java编程的逻辑 (70) - 原子变量和CAS
- java模仿银行账务业务_一个银行转账业务模型分析:大魏Java记5-7
- 关于dsoframer VC++下的使用
- 经典Hive-SQL面试题及答案
- 6678-GPIO基础(1)
- 防止javascript脚本读取cookie信息
- Java Annotation自定义注解详解
- Google earth 生成研究区适量边界(研究区边界从哪来?)
- 数电课程设计——电子钟
- coursera无法播放视频
- 模型量化(6):Yolov5 QAT量化训练
- LeetCode--574. 当选者