逆分布函数法生成随机数(指数分布) R语言实现

先说明一下符号:U(0,1)-均匀分布,”~“表示服从xxx分布,F(x),为需要生成的随机数的分布函数,invF(x)表示逆分布函数,那么算法步骤如下:

step 1: 产生 u~U(0,1)

step 2:计算X=invF(u)

那么X就是服从分布函数为F(x)的随机数,一个简单的证明:

证明: P(X<y)=P(invF(u)<y)=P(u<F(y))=F(y); 证毕。

你会感觉好简单啊,对是很简,下面就给出常用的指数分布
       首先,指数分布的分布函数:

F(x)=1-exp(-lamda*x);x>0( lamda 为参数)

因此逆分布函数:

invF(x)=-(1/lamda)*ln(1-x);0<x<1

所以随机数数产生过程:

step 1:产生u~U(0,1)

step 2: 计算X=-ln(1-u)

得到随机数

x <- runif(100)
lamda <- 0.1
U <- runif(100)
lamda <- 0.1
X <- -1/lamda * log(U)
hist(X,prob=T,col=gray(0.9),
main="exp from uniform")
curve(dexp(x,lamda),add=T,col="red")

  

时间: 2024-12-20 17:31:32

逆分布函数法生成随机数(指数分布) R语言实现的相关文章

R语言中文社区历史文章整理(类型篇)

R语言中文社区历史文章整理(类型篇) R包: R语言交互式绘制杭州市地图:leafletCN包简介 clickpaste包介绍 igraph包快速上手 jiebaR,从入门到喜欢 Catterplots包,让你绘制不一样的图 今天再来谈谈REmap包 ggplot2你需要知道的都在这... R访问数据库管理系统(通过RODBC包和RMySQL包两种方式) NLP--自然语言处理(三)text2vec包 Rattle:数据挖掘的界面化操作 借助caret包实现特征选择的工作 R语言的高质量图形渲染

[R语言常用函数]生成随机数

服从正态分布的随机数 rnorm(n,mean=0,sd=1) 如果想要生成一个长度为10的向量,向量中的每个值服从标准正态分布,那么可以这样写 > rnorm(10) [1] -0.7125585 2.2070410 1.4730548 -0.6655749 0.5349409 -0.9700122 0.4970766 [8] -1.7385672 0.9300553 -0.4663140 另外,该函数也可以生成服从一般正态分布的随机数,例如 > rnorm(10,mean=1,sd=4)

R语言中的四类统计分布函数

R语言中提供了四类有关统计分布的函数(密度函数,累计分布函数,分位函数,随机数函数).分别在代表该分布的R函数前加上相应前缀获得(d,p,q,r).如: 1)正态分布的函数是norm,命令dnorm(0)就可以获得正态分布的密度函数在0处的值(0.3989)(默认为标准正态分布). 2)同理,pnorm(0)是0.5就是正态分布的累计密度函数在0处的值. 3)而qnorm(0.5)则得到的是0,即标准正态分布在0.5处的分位数是0(在来个比较常用的:qnorm(0.975)就是那个估计中经常用到

R语言系列:生成数据

R语言系列:生成数据 (2014-05-04 17:41:57) 转载▼ 标签: r语言 教育 分类: 生物信息 生成规则数据1.使用“:“,如x=1:10,注意该方法既可以递增也可以递减,如y=10:12.seq,有两种用法:①seq(起点,终点,步长); ②seq(length=9, from=1, to=5)    seq还有一种简写:seq(x)    #相当于1:length(x),但当length(x)为0时,返回integer(0)3.c(1,2,8)4.使用scan(),可以等待

一起talk C栗子吧(第六回:C语言实例--生成随机数)

各位看官们,大家好,从今天开始,我们讲大型章回体科技小说 :C栗子,也就是C语言实例.闲话休提, 言归正转.让我们一起talk C栗子吧! 看官们,上一回中咱们说的是数组巧妙赋值的例子,这一回咱们说的例子是:生成随机数. 看官们学过C语言的话,还记得如何生成随机数吧.忘记了?那么我们一起说说.使用rand()函数可以生 成随机数,不过,它生成的随机数是一种伪随机数.因为重复执行程序的话,得到的随机数是一样.生成 随机数的函数是通过一个固定的数值来计算随机数的,我们可以通过srand()函数来指定

快速生成R语言实现Genetic Linkage Model参数估计方法的报告

第一篇随笔,打算把搞过的东西整理一下-test- 基于Rstudio与Markdown可以快速生成R语言报告,结果可直接发布在RPubs,当然,你应当注册一个RPubs账号. 先来一发已发布的报告[Genetic Linkage Model],主要介绍了利用Newton-Raphson.EM.Gibbs这三种经典算法对Genetic Linkage Model做参数估计的方法和R代码.

&lt;转&gt; 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

R语言数据挖掘实战系列(5)

R语言数据挖掘实战系列(5)--挖掘建模 一.分类与预测 分类和预测是预测问题的两种主要类型,分类主要是预测分类标号(离散属性),而预测主要是建立连续值函数模型,预测给定自变量对应的因变量的值. 1.实现过程 (1)分类 分类是构造一个分类模型,输入样本的属性值,输出对应的类别,将每个样本映射到预先定义好的类别.分类模型建立在已有类标记的数据集上,模型在已有样本上的准确率可以方便地计算,所以分类属于有监督的学习. (2)预测 预测是建立两种或两种以上变量间相互依赖的函数模型,然后进行预测或控制.

《R语言实战》学习笔记fifth

总算到了第5章-高级数据管理了啊 作为这本书第一部分-入门的收官之章,本章还是挺重要的呢 这章可以分为三个部分,第一部分:快速浏览R 中的多种数学.统计和字符处理函数,第二部分:如何编写函数来完成数据处理和分析任务,第三部分:了解数据的整合和概数方法,以及数据集的重塑和重构方法 > 学生姓名 <- c("John Davis", "Angela Williams", "Bullwinkle Moose", "David Jo