1.概述

作为一种语言进行统计分析,R有一个随机数生成各种统计分布功能的综合性图书馆。R语言可以针对不同的分布,生成该分布下的随机数。其中,有许多常用的个分布可以直接调用。本文简单介绍生成常用分布随机数的方法,并介绍如何生成给定概率密度分布下的随机数。

2.常用分布的随机数

在R中各种概率函数都有统一的形式,即一套统一的 前缀+分布函数名

   d 表示密度函数(density);

   p 表示分布函数(生成相应分布的累积概率密度函数);

   q 表示分位数函数,能够返回特定分布的分位数(quantile);

   r 表示随机函数,生成特定分布的随机数(random)。

2.1各种分布的随机数生存函数

rnorm(n, mean=0, sd=1)   #正态分布
rexp(n, rate=1) #指数
rgamma(n, shape, rate=1, scale=1/rate) #r 分布
rpois(n, lambda) #泊松
rt(n, df, ncp) #t 分布
rf(n, df1, df2, ncp) #f 分布
rchisq(n, df, ncp=0) #卡方分布
rbinom(n, size, prob) #二项分布
rweibull(n, shape, scale=1) #weibull 分布
rbata(n, shape1, shape2) #bata 分布
runif(n,min=0,max=1) #均匀分布

  

2.2以二项分布为例,实现上述各类函数:

dbinom(x, size, prob, log = FALSE)# 可用于计算二项分布的概率。
pbinom(q, size, prob, lower.tail = TRUE, log.p = FALSE)#二项分布的分布函数值
qbinom(p, size, prob, lower.tail = TRUE, log.p = FALSE)#生成二项分布的特定分位数
rbinom(n, size, prob)#生成二项分布的随机数

二项分布随机数

  二项分布是指n次独立重复伯努利试验成功的次数的分布,每次伯努利试验的结果只有两个,成功和失败,记成功的概率为p。生成二项分布随机数的函数是:rbinom() 。句法是:rbinom(n,size,prob)。n表示生成的随机数数量,size表示进行伯努利试验的次数,prob表示一次贝努力试验成功的概率。

 # 例:产生100个n为10,20,50,概率p为0.25的二项分布随机数:

    par(mfrow=c(1,3))
p=0.25
for( n in c(10,20,50)) {
x=rbinom(100,n,p)
hist(x,prob=T,main=paste("n =",n))
xvals=0:n
points(xvals,dbinom(xvals,n,p),type="h",lwd=3)
}
par(mfrow=c(1,1))

3.离散随机变量的生成

3.1逆变换法

假设我们希望生成一个离散型随机变量X,它有密度

我们首先可以生成一个均匀分布的随机数,使得:

#代码实现如下:
p1<-0.15
p2<-0.2
p3<-0.3
p4<-0.35
disRand<-function(i){
u<-runif(1,0,1)
if(u<p1) x<-4 else
if(u<p2+p2) x<-2 else
if(u<p3+p2+p1) x<-1 else
x<-3
return(x)
}

  

3.2二项随机变量的生成

Example:假设要生成1000个服从b(100,0.6)的随机数

p<-0.6
n<-100
c<-p/(1-p)
i<-0
pp<-(1-p)^n
f<-pp
binomialRandomeV<-function(o){
u<-runif(1,0,1)
f<-
while(u>=f){
pp<-c*(n-i)*pp/(i+1)
f<-f+pp
i<-i+1
}
return(i)
}
sapply(c(1:1000),binomialRandomeV)

  

  

  

R语言生成随机数的更多相关文章

  1. 【R】R语言生成随机数

    1.概述 作为一种语言进行统计分析,R有一个随机数生成各种统计分布功能的综合性图书馆.R语言可以针对不同的分布,生成该分布下的随机数.其中,有许多常用的个分布可以直接调用.本文简单介绍生成常用分布随机 ...

  2. 利用R产生随机数

    生成随机数有两个函数runif()和rnorm(),其中r表示的是random随机的意思,unif表示的是均匀分布,而norm表示的是正态分布. 1)生成10个2到3之间的,服从均匀分布的随机数:ru ...

  3. Go语言生成随机数

    在Go语言中生成随机数需要使用Seed(value)函数来提供伪随机数生成种子,一般情况下都会使用当前时间的纳秒数字,如果不在生成随机数之前调用该函数,那么每次生成的随机数都是一样的. 函数rand. ...

  4. r语言之给定的概率密度函数生成随机数

    假设概率密度函数为: 思路: 首先产生-1到1之间的均匀分布随机数x,和0到1之间的均匀分布随机数y. 如果y<f(x),则x是符合该概率密度的随机数,否则,重复上述操作. 用r语言生成100个 ...

  5. R语言实战(二)数据管理

    本文对应<R语言实战>第4章:基本数据管理:第5章:高级数据管理 创建新变量 #建议采用transform()函数 mydata <- transform(mydata, sumx ...

  6. R语言学习笔记:基础知识

    1.数据分析金字塔 2.[文件]-[改变工作目录] 3.[程序包]-[设定CRAN镜像] [程序包]-[安装程序包] 4.向量 c() 例:x=c(2,5,8,3,5,9) 例:x=c(1:100) ...

  7. (数据科学学习手札03)Python与R在随机数生成上的异同

    随机数的使用是很多算法的关键步骤,例如蒙特卡洛法.遗传算法中的轮盘赌法的过程,因此对于任意一种语言,掌握其各类型随机数生成的方法至关重要,Python与R在随机数底层生成上都依靠梅森旋转(twiste ...

  8. R语言学习笔记(十二):零碎知识点(31-35)

    31--round(),floor()和ceiling() round()四舍五入取整 floor()向下取整 ceiling()向上取整 > round(3.5) [1] 4 > flo ...

  9. 《R语言实战》读书笔记--第五章 高级数据管理

    本章内容: 数学和统计函数 字符处理函数 循环和条件执行 自编函数 数据整合与重塑 5.1一个数据处理难题 5.2数值和字符处理函数 分为数值函数和字符串函数,下面是数学函数截图: ceiling.f ...

随机推荐

  1. swoole 弹幕系统

    一.服务器分布 1.LVS负载均衡 2.多台danmu server 3.Redis(集群)用于存储数据和夸服务器订阅通知 4.Cli server用于读取缓存数据并存到mysql,以及清空缓存 二. ...

  2. AlloyTouch之select选择插件

    原文地址:https://github.com/AlloyTeam/AlloyTouch/wiki/Simple-Select 写在前面 很多情况下,产品希望统一安卓和IOS select交互和样式. ...

  3. DP 动态规划

    p1269 马棚 题目: 每天,小明和他的马外出,然后他们一边跑一边玩耍.当他们结束的时候,必须带所有的马返回马棚,小明有K个马棚.他把他的马排成一排然后跟随它走向马棚,因为他们非常疲劳,小明不想让他 ...

  4. 第22篇 js中的this指针的用法

    前面把js的相关知识总结了下,今天把js中的上下文的this,对于强类型语言,this的用法非常的单一,因为他们没有js特有的动态绑定. 首先看下面代码: function funcA() { thi ...

  5. 移动H5开发入门知识,CSS的单位汇总与用法

    说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着手机的流行,web app和hybrid a ...

  6. SFTP远程文件上传

    远程服务器remote_host=192.168.29.142用户为remote_www,用户当前目录为/home/remote_www 本地服务器local_host=192.168.29.135用 ...

  7. 读书笔记 effective c++ Item 31 把文件之间的编译依赖降到最低

    1. 牵一发而动全身 现在开始进入你的C++程序,你对你的类实现做了一个很小的改动.注意,不是接口,只是实现:一个私有的stuff.然后你需要rebuild你的程序,计算着这个build应该几秒钟就足 ...

  8. java中的递归

    所谓递归,是指程序调用自身,当然,递归不会无休止地调用下去,它必然有一个出口,当满足条件时程序也就结束了,不然的话,那就是死循环了. 看下面这个类,有几个递归方法,看了之后肯定会对你学习递归很有帮助的 ...

  9. ServletConfig使用

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  10. zTree自动点击第一个节点(转载)

    var setting = { view: { dblClickExpand: true,//双击展开 showLayer: false, selectedMulti: false,//是否允许多选 ...