均匀分布映射到任意分布

  当我们想对某些特定分布进行抽样时,要通过均匀分布的抽样来映射,因为电脑算法产生的伪随机数是看做均匀分布的。

  假设均匀分布随机变量为$X$,则特定分布$\displaystyle p_Y(y)$的随机变量就为$Y=g(X)$。如何求得这个$g(x)$映射呢?

  关于利用均匀分布随机变量产生任意分布变量的实现 - Rainlin - 博客园

  虽然这个博客有一些借鉴意义,但是我觉得这个应该是错的。因为有些例子并不满足,但是我可以通过凑函数的方式来映射。下面这个概率密度的映射想了我好几个小时,最后原来是开方的时候没有考虑负的平方根。

  比如我要将$X$映射到$\displaystyle p_Y(y) = -2y+2,y\in [0,1]$,可以凑出映射$Y = 1-\sqrt{1-X},X\in [0,1]$。

  对于这种简单的分布,我是直接先映射为一个大概的最高次(这里是$X^0.5$),然后通过计算分布函数再求概率密度来查看还差多少,再通过函数的平移、对称等变换来“凑”。

原文地址:https://www.cnblogs.com/qizhou/p/12682798.html

时间: 2025-01-18 03:20:46

均匀分布映射到任意分布的相关文章

使用均匀分布随机数产生器构造任意分布的随机数产生器

一.算法原理 在概率论中,有下面重要的结论:设随机变量Y的概率分布函数F(y)为连续函数,而X是在(0,1)上均匀分布的随机变量,设,则Z与Y有相同的分布. 因此,理论上,我们可以用(0,1)上的均匀分布来得到任意分布的随机数 设随机变量Y的概率密度函数为f(y),则,我们可以按照下面的步骤来获得满足其分布的随机数: 1.根据给定的概率密度函数(PDF)f(y),通过积分算出概率分布函数F(y): 2.计算概率分布函数F(y)的反函数, 3.生成一个(0,1)上均匀分布的随机数变量X, 4.那么

以均匀随机分布生成任意斜率随机线性分布

本文的目的是利用(0,1)上的均匀分布随机数生成器生成区间为(imin,imax),斜率为slope的任意归一化线性随机数生成器. 借助(0,1)上的均匀随机数生成器,可以通过反函数法生成任意分布的随机数生成器. 对于C++,生成(imin,imax)上随机数生成器的代码为 double uniform_dist(double imin,double imax) { int temp; while((temp=rand())==RAND_MAX){ ; } return temp/RAND_MA

任意连通图的哈密顿回路计算流程

 任意连通图的哈密顿回路计算流程 在一个平面内任意分布了560个点,让每一个点都与附近的某几个点相连,要求从1这个点出发,经过每一个点且只经过一次再回到1,得到一个回路--哈密顿回路.这样的回路随着点数的增加,估计这个连通图里面的哈密顿回路将比整个宇宙的粒子数都多10的多少次方倍.不过有时候我们只需要得出其中一条就满足了.现在我把自己做的计算流程放在这里,让更多的专家们指正. 下面来两个例子 果你对

Kernel那些事儿之内存管理(12) --- 内核映射(中)

内核地址空间中后面这128MB的最后一部分,是固定映射 (fixed mappings). 固定映射是什么意思?为什么要有固定映射?Kernel源代码的注释里有一句话,可谓一语中的:The point is to have a constant address at compile time, but to set the physical address only in the boot process. 一个固定映射的线性地址是个常量,例如0xffffc000,且该常量在编译阶段就可以确定.

MONGODB全面总结

关于Mongodb的全面总结,学习mongodb的人,可以从这里开始! 分类:            MongoDB2013-06-08 09:5610213人阅读评论(0)收藏举报 目录(?)[+] BSON 效率 传输性 性能 写入协议 数据文件 名字空间和盘区 内存映射存储引擎 其他 MongoDB的架构 MongoDB的特点 MongoDB的功能 MongoDB的局限性与不足 适用范围 MongoDB的不适用范围 要点 MongoDB分布式复制 MongoDB语法与现有关系型数据库SQL

<转> c/c++生成随机数

<一> C/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,C语言/C++里没有自带的random(int number)函数. (1)  如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间.RAND_MAX定义在stdlib.h, 其值为2147483647. 例如: #include<stdio.h> #include<stdlib.h> void mai

哈希函数和哈希表综述 (转)

哈希表及哈希函数研究综述 摘要 随着信息化水平的不断提高,数据已经取代计算成为了信息计算的中心,对存储的需求不断提高信息量呈现爆炸式增长趋势,存储已经成为急需提高的瓶颈.哈希表作为海量信息存储的有效方式,本文详细介绍了哈希表的设计.冲突解决方案以及动态哈希表.另外针对哈希函数在相似性匹配.图片检索.分布式缓存和密码学等领域的应用做了简短得介绍 哈希经过这么多年的发展,出现了大量高性能的哈希函数和哈希表.本文通过介绍各种不同的哈希函数的设计原理以及不同的哈希表实现,旨在帮助读者在实际应用中,根据问

c++获取随机数

<一> C/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,C语言/C++里没有自带的random(int number)函数.(1)  如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间.RAND_MAX定义在stdlib.h, 其值为2147483647.例如: #include<stdio.h>#include<stdlib.h>void main(){

哈希表(Hash table)(1)

哈希表(Hash table)经常被用来做字典(dictionary),或称符号表(symbol-table) 直接存取表(Direct-access table): ? 直接存取表(Direct-access table)的基本思想是:如果key的范围为0~m-1而且所有key都不相同, 那么可以设计一个数组T[0..m-1],让T[k]存放key为k的元素, 否则为空(NIL) ? 显然, 所有操作都是O(1)的 ? 问题:key的范围可能很大! 64位整数有18,446,744,073,7