非常多的应用需要用到随机数,而R语言在simulating random numbers非常的有强大的工具可供使用。

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

如:

1.  r*** function (for "random"随机函数), a d*** function (for "density"密度函数), a p*** (for "probability"分布函数), and q*** (for "quantile"分位数函数).

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)

2.  不同的分布函数:

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

下面会具体介绍几个非常实用的 函数:


sample()

首先介绍sample()随机抽样函数:

> sample
function (x, size, replace = FALSE, prob = NULL)
{if (length(x) == 1L && is.numeric(x) && is.finite(x) && x >= 1) {if (missing(size)) size <- xsample.int(x, size, replace, prob)}else {if (missing(size)) size <- length(x)x[sample.int(length(x), size, replace, prob)]}
}
<bytecode: 0x000000001598a310>
<environment: namespace:base>

 x(范围),size(抽样个数),replace有无放回的抽样,prob概率设置

用个例子:试用R编写 模拟扔骰子四次:

得到的是:

>sample(1:6, 4,replace = TRUE)
[1] 3 1 3 3

再来一次:

>sample(1:6, 4,replace = TRUE)
[1] 1 2 3 2 

可以明显知道,每一次都不一样!

在尝试一些不同的参数变化,看看有什么不一样:

sample(c(0,1), 100, replace = TRUE,prob = c(0.3, 0.7))

而涉及sample来进行数据抽样的问题,详细还可以看:



rbinom()

rbinom(n, size, prob) 是生成二项分布随机数的函数:n表示生成的随机数数量,size表示进行贝努力试验的次数,prob表示一次贝努力试验成功的概率。

二项分布是指n次独立重复贝努力试验成功的次数的分布,每次贝努力试验的结果只有两个,成功和失败,记成功的概率为p

> rbinom(1, size = 100, prob = 0.7)
[1] 76
> flips2<-rbinom(100,1,0.7)
> flips2[1] 1 1 0 0 0 0 0 1 0 0 1 1 0 0 1 1 1 1 0 0 1[22] 0 1 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0[43] 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 1 1 0 1 1 1[64] 0 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0[85] 0 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1
> sum(flips2)
[1] 69

rnorm()

正态分布随机数的生成函数是 rnorm(n,mean=0,sd=1)  :n表示生成的随机数数量,mean是正态分布的均值,默认为0,sd是正态分布的标准差,默认时为1;


泊松分布 Poisson Distribution

> rpois
function (n, lambda) 

下面是生成5个均值为10的PD:

> rpois(5,10)
[1] 13 10 12  9 11

用 replicate函数去重复100次.

> my_pois <-replicate(100, rpois(5, 10))> my_pois[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,]   18   16    8   12    3    9    8    6
[2,]    6   13   13    7   10    6    9   12
[3,]   10    4   10   13    9    6    9   17
[4,]   12    6   14   15    8    9    7   15
[5,]    8    7    7    7   14    8    7    8[,9] [,10] [,11] [,12] [,13] [,14] [,15]
[1,]   13    10     9     6    11     8     8
[2,]   10     9    13    13     9    12    11
[3,]   11    12     8     9     7    12     8
[4,]    5     8     5     7     9    14    10
[5,]    8     5     9    11    15    10    12[,16] [,17] [,18] [,19] [,20] [,21] [,22]
[1,]     8     5     4    18    13    12     9
[2,]     8    11     9    13    12    10     4
[3,]    12    12     7     6    12     6     7
[4,]    12     7    12    10    12     7    10
[5,]    11    10     7    10     9     9    17[,23] [,24] [,25] [,26] [,27] [,28] [,29]
[1,]    13    10     7    11    12     5    14
[2,]     8     5    11    11    15     5    11
[3,]    11     7    13    11    12    11    11
[4,]     5    14     8     8     8     8     8
[5,]     8     9     8    19     9    11    12[,30] [,31] [,32] [,33] [,34] [,35] [,36]
[1,]    13    10    11     8     8    14    10
[2,]     8    18    12     8    10     9     6
[3,]    11     9    14    12     8     6     5
[4,]    12     9    10     4     6    13    10
[5,]     8    13     7    10    12     8     5[,37] [,38] [,39] [,40] [,41] [,42] [,43]
[1,]    13    10    15    11    10     4    12
[2,]     6    14     8    12    14     9     5
[3,]     4     9     7     8    11     7     6
[4,]    16     9     9    11     6     9    10
[5,]     9     6    11    10    13    10    11[,44] [,45] [,46] [,47] [,48] [,49] [,50]
[1,]    10     8    10    12     9     9    10
[2,]    12    13    17     8    11    10    10
[3,]     7     9    10    13     7    16    10
[4,]     8     4    11    12    14    14     7
[5,]    10    11    10     8    15     9     7[,51] [,52] [,53] [,54] [,55] [,56] [,57]
[1,]    10     6     9    12     7    11     7
[2,]     8     7     7     8    14    11    12
[3,]    15     8    11     7     7    10     7
[4,]     8     8    11     9    11    11     7
[5,]    11     5    13    14    14    10    12[,58] [,59] [,60] [,61] [,62] [,63] [,64]
[1,]    11     7     7     7    11    11     7
[2,]     8     7     9     8    11    14     6
[3,]    18    12    11    14    14     6     8
[4,]    19    11     7     9    10     8    12
[5,]    10    10     9    10    13    10    10[,65] [,66] [,67] [,68] [,69] [,70] [,71]
[1,]    10     8    14    11    13     8    17
[2,]    12    13    11     6    12    11    10
[3,]     4     7    11    14     8    11     9
[4,]    10    15    15    15     7     8    13
[5,]     4    14     8     9    11     9    11[,72] [,73] [,74] [,75] [,76] [,77] [,78]
[1,]     9    15    10    10    11    13     5
[2,]     6    12    11     9    13     8    12
[3,]    15    10     7     8    10    13     6
[4,]     9     8    14    17     7     6    11
[5,]    11     5     9     9    11    10    11[,79] [,80] [,81] [,82] [,83] [,84] [,85]
[1,]    17     5    15     8    16    13    11
[2,]     4     9     6    17    11     8     8
[3,]    10    12    13     8    11    11    12
[4,]    10     8     6    12     8     8    15
[5,]    11    13    11     5     8     8     5[,86] [,87] [,88] [,89] [,90] [,91] [,92]
[1,]    10     6     7     5    13     4     6
[2,]     9     8     4     8    10     7     6
[3,]    11     6     7    12    10    11    10
[4,]     8     7    12    11     9    12     6
[5,]     8    10     9    10    13     8    11[,93] [,94] [,95] [,96] [,97] [,98] [,99]
[1,]    10    12     6    10    11    11    11
[2,]    11     8     3     4     5    12     7
[3,]     9     3    15     6     9     8     7
[4,]    13     7     8     7     8     9    11
[5,]     9    12     9     7    15     5    10[,100]
[1,]     14
[2,]      4
[3,]      5
[4,]      7
[5,]      7


有关replicate()

它可以将某个函数重复运行N次,常常用来生成较复杂的随机数。

而有关replicate()函数几个实例用法,可以参照:https://blog.gtwang.org/r/r-advanced-loops/


最后看看生成的直方图:

> cm<-colMeans(my_pois)
> hist(cm)


R语言中实现随机分布相关推荐

  1. R语言中实现随机森林建模的包randomForest

    文章目录 介绍 randomForest()的用法 参数介绍 输出参数 实例 varImpPlot()的用法 参数介绍 实例 介绍 randomForest 使用 Breiman 的随机森林算法(ba ...

  2. R语言 非中心化F分布

    R语言 非中心化F分布 非中心化F分布的定义 R语言中的非中心化F分布 非中心化F分布的定义 非中心化的F分布有两种不同的定义方式,这两种不同的定义方式源于两种不同的非中心化卡方分布的定义. 定义一( ...

  3. c语言比率分布 函数 rate(m),R语言中统计分布和模拟_R语言培训

    R语言中统计分布和模拟 前言 很多应用都需要随机数.像interlink connection,密码系统.视频游戏.人工智能.优化.问题的初始条件,金融等都需要生成随机数.但实际上目前我们并没有&qu ...

  4. R语言中如何进行PCA分析?利用ggplot和prcomp绘制基因表达量分析图

    学习笔记的主要内容是在R语言中利用ggplot2进行PCA分析和绘图,包括简单分析与操作流程,对比不同方式得到的结果差异,提供脚本代码供练习. PCA分析的原理 在处理基因差异表达数据时,有时候需要分 ...

  5. 用r语言画出y = ax^2 + bx + c,R语言中如何使用最小二乘法

    这里只是介绍下R语言中如何使用最小二乘法解决一次函数的线性回归问题. 代码如下: > x > y > lsfit(x,y) 结果如下: $coefficients Intercept ...

  6. 白话空间统计之二十五:空间权重矩阵(四)R语言中的空间权重矩阵(2)

    上一篇,讲了R语言中的空间权重矩阵的结构,这一节讲讲R语言里面空间权重矩阵的自定义. 与ArcGIS自定义空间权重矩阵一样,R语言的空间权重矩阵如果纯粹从零开始自定义生成,是非常麻烦的事情,所以我们一 ...

  7. moran指数 r语言_白话空间统计之二十五:空间权重矩阵(四)R语言中的空间权重矩阵(2):不同空间关系对莫兰指数的影响...

    原标题:白话空间统计之二十五:空间权重矩阵(四)R语言中的空间权重矩阵(2):不同空间关系对莫兰指数的影响 上一篇,讲了R语言中的空间权重矩阵的结构,这一节讲讲R语言里面空间权重矩阵的自定义. 与Ar ...

  8. R语言中使用非凸惩罚函数回归(SCAD、MCP)分析前列腺数据

    原文链接:http://tecdat.cn/?p=20828 本文使用lasso或非凸惩罚拟合线性回归,GLM和Cox回归模型的正则化,特别是_最小_最_大凹_度_惩罚_函数_(MCP)_和光滑切片绝 ...

  9. r语言中正定矩阵由于误差不正定_R语言之数据处理(一)

    在上一篇小文中,提到了关于R语言导入数据的一些方法,之后的重点就转向了数据的处理上.数据处理其实在整个数据分析项目中所占用的时间是比较多的,所以根据处理的目的不同,也有不同的处理方法.在R语言中,我通 ...

最新文章

  1. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(添加箱图、带缺口的小提琴图、小提琴图)实战
  2. one方法报错 select_【总结】Pandas DataFrame 使用方法
  3. [20171227]表的FULL_HASH_VALUE值的计算2
  4. 初探swift语言的学习笔记七(swift 的关健词)
  5. FPGA学习之路—接口(2)—I2C协议详解+Verilog源码分析
  6. 麦克劳林展开式_数学家麦克劳林与牛顿的故事
  7. shell 两时间之差
  8. 170 亿参数加持,微软发布史上最大 Transformer 模型 T-NLG!
  9. phoneGap实际开发中的某些雷区
  10. HDU 5979 2016ICPC大连 I: Convex
  11. 天朝四大不正经社交软件 第一名“亮了”
  12. 在线阅读各版本android系统源代码
  13. luogu P5290 [十二省联考2019]春节十二响 优先队列 + 启发式合并
  14. win7命令提示符下关闭IPv6隧道的方法
  15. 1.4.4 Performance Measures
  16. 莫比乌斯反演专题题解
  17. Python AST node转为string(source code)
  18. ajax请求是宏任务还是微任务_好程序员web前端学习路线分享了解AJAX是什么
  19. 深入浅出讲解FOC控制与SVPWM技术
  20. linux 开机进入initramfs

热门文章

  1. 中国电子学会2022年06月份青少年软件编程Scratch图形化等级考试试卷四级真题(含答案)
  2. 马哥python 培训
  3. 简易的Android绘图程序
  4. 使用百度EasyDL实现钢筋计数
  5. 把linux的文件备份到windows上
  6. c语言之分析输出实数时的有效数位
  7. java实现一个学生信息表相应要求
  8. 2021最新秋招Java软件工程师面试笔试必备面试题及答案汇总
  9. docker 自启动总是 Exited
  10. 解决docker 容器状态 Exited (1)问题