在人们的生活中,很多场景都需要用到随机数,例如福利彩票,车牌摇号,公共用房分配等。在用数学模型, 包括概率统计模型处理实际应用中的问题时, 我们希望建立的模型能够尽可能地符合实际情况。但是,实际情况是错综复杂的,如果一味地要求模型与实际完全相符,会导致模型过于复杂,以至于不能进行严格理论分析。所以实际建模时会忽略许多细节,为使得模型比较简单,引入随机数对许多理论进行分析研究。

一、概率密度函数与概率分布函数

概率密度函数用来描述连续型数据的概率,即描述随机变量在某一确定取值点的可能性的函数,用\(f(x)\)表示,\(f(x)\)在特定区间的积分值称为变量\(x\)属于该区间的概率密度函数,记分布函数

\[F(x)={\int}^{x}_{-\infty}{f(x)dx}
\]

概率分布函数\(F(x)\)可用来描述离散型数据的概率。后面也用\(p(x)\)描述随机变量在某一确定取值点的可能性的函数,即\(p(x)\)是离散随机变量在特定取值上的概率,如\(p(1)、p(0)\)。

分位数是分布函数的逆(反)函数,即给定概率值计算出的随机变量的取值。在参数估计和假设检验中常常用到。

概率分布函数和概率密度函数,无非是用来描述事件在某个点或者某个区间内发生的概率大小。将其分为概率分布和概率密度函数,实质上是对连续性变量和离散型变量的分类讨论,特定数值,特定分析。概率分布函数和概率密度函数的全区间的结果必都为1,即事件在全区间段内必会发生。

二、随机分布

概率分布相关函数汇总参看下图

三、随机数生成

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

d 表示密度函数(density);

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

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

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

分布 随机数 概率密度 分布函数 分位数函数
正态分布 rnorm dnorm pnorm qnorm
二项分布 rbinom dbinom pbinom qbinom
负二项分布 rnbinom dnbinom pnbinom qnbinom
几何分布 rgeom dgeom pgeom qgeom
超几何分布 rhyper dhyper phyper qhyper
F分布 rf df pf qf
泊松分布 rpois dpois ppois qpois
t分布 rt dt pt qt
连续均匀分布 runif dunif punif qunif

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

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)#生成二项分布的随机数

3.1 rbinom()

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

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

rbinom(50, size =1, prob = 0.7)
 [1] 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 0 1
[32] 1 1 0 1 1 1 1 0 1 1 0 1 0 0 1 0 1 1 1

3.2 rnorm()

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

rnorm(100, mean = 0, sd = 1)
 [1]  0.76783  1.09322  0.33601 -0.98324 -0.44368 -0.53098 -0.40858  2.01895 -0.97241
[10] -1.31241 -0.01927 -1.24650 -0.97130 0.15141 0.38303 -1.02315 1.13883 0.59859
[19] 0.00686 0.28861 1.36133 0.50797 -1.67239 -0.40857 -0.36354 -0.07675 -0.99930
[28] 0.42494 1.04411 0.08761 0.13990 0.28055 -1.35221 0.18436 1.75845 0.51947
[37] 1.36835 -0.71304 -0.88909 0.82046 1.30747 0.77086 -1.55077 -1.14196 1.25769
[46] -0.69147 0.04648 -1.08179 -0.62592 1.20181 -1.21098 -0.47295 0.50079 -0.31153
[55] -0.14242 0.88848 0.87554 -0.61668 0.04143 -0.47707 0.12071 -1.42551 -0.58143
[64] -0.46594 -1.16403 -0.74396 -0.33789 0.19360 0.70602 0.76989 -0.70990 -0.82788
[73] -0.34566 -0.93789 0.86371 -0.40835 -0.65136 0.23898 -0.00900 -0.67150 -0.86754
[82] 0.24687 -0.07485 0.82163 -1.26949 -2.11648 -1.05591 0.30317 0.79894 0.25390
[91] -0.05534 -0.26624 0.74114 -1.21227 -0.14231 0.93185 1.31570 0.35381 -0.54197
[100] -2.43955

3.3 sample()

抽样函数sample(x, size, replace = FALSE, prob = NULL):x(范围),size(抽样个数),replace有无放回的抽样,prob概率,可实现从随机数中取样,给随机数分组等等。

x<-rnorm(100, mean = 0, sd = 1)
sample(x, 30, replace = TRUE)
[1]   1.3294 -0.2839 -0.6261 -0.4688  0.0343 -0.3838 -0.0318  0.7202  0.4057  0.9090
[11] 0.8505 -1.3871 -0.4807 -0.7399 -0.7399 -1.0414 -0.2077 -1.1316 0.9259 0.5612
[21] -1.0414 -0.4404 -0.0786 0.6309 -0.3348 -0.5885 0.4280 -0.2017 0.2506 0.3028
x<-rnorm(100, mean = 0, sd = 1)
index <- sample(c(1,2),size = length(x),replace=TRUE,prob = c(0.7,0.3))
traindata <- x[index == 1]
testdata <- x[index == 2]
testdata
[1] -0.320 0.506 -0.469 -0.734 0.464 0.688 0.380 -1.302 0.710 -0.486 -0.537 0.140
[13] -0.115 1.285 -1.511 1.288 -0.458 1.708 0.232 0.644 0.215 0.839 -0.262 0.759
[25] -0.473 -0.535 -1.435 0.396 -0.510 -0.622 -1.788 -0.385 -0.629 1.134 -2.161

四、总结

随机数在密码学中有着非常基础且重要的地位,常用于密钥和安全参数生成。而在日常生活中,随机数也是保障公平性的重要手段,广泛应用于抽样、抽签、抽奖等场景当中。随机数在区块链中也应用广泛,除了密钥生成等传统安全场景,在共识机制、零知识证明等热门场景中也发挥着重要的作用,保护着区块链的安全。

参考文献

1.(生成随机数)[https://www.pianshen.com/article/8267220730/]

2.(R语言-11利用sample函数抽样)[https://www.jianshu.com/p/aa9154786dd2]

随机分布和随机数生成——R语言的更多相关文章

  1. 常用连续型分布介绍及R语言实现

    常用连续型分布介绍及R语言实现 R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数 ...

  2. R语言解读一元线性回归模型

    转载自:http://blog.fens.me/r-linear-regression/ 前言 在我们的日常生活中,存在大量的具有相关性的事件,比如大气压和海拔高度,海拔越高大气压强越小:人的身高和体 ...

  3. Rserve详解,R语言客户端RSclient【转】

    R语言服务器程序 Rserve详解 http://blog.fens.me/r-rserve-server/ Rserve的R语言客户端RSclient https://blog.csdn.net/u ...

  4. R语言︱线性混合模型理论与案例探究(固定效应&随机效应)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 线性混合模型与普通的线性模型不同的地方是除了有 ...

  5. R语言︱机器学习模型评估方案(以随机森林算法为例)

    笔者寄语:本文中大多内容来自<数据挖掘之道>,本文为读书笔记.在刚刚接触机器学习的时候,觉得在监督学习之后,做一个混淆矩阵就已经足够,但是完整的机器学习解决方案并不会如此草率.需要完整的评 ...

  6. R语言︱决策树族——随机森林算法

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:有一篇<有监督学习选择深度学习 ...

  7. R语言分类算法之随机森林

    R语言分类算法之随机森林 1.原理分析: 随机森林是通过自助法(boot-strap)重采样技术,从原始训练样本集N中有放回地重复随机抽取k个样本生成新的训练集样本集合,然后根据自助样本集生成k个决策 ...

  8. R语言解读多元线性回归模型

    转载:http://blog.fens.me/r-multi-linear-regression/ 前言 本文接上一篇R语言解读一元线性回归模型.在许多生活和工作的实际问题中,影响因变量的因素可能不止 ...

  9. [转]概率基础和R语言

    概率基础和R语言 R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数据的爆发,R语 ...

  10. R语言书籍的学习路线图

    现在对R感兴趣的人越来越多,很多人都想快速的掌握R语言,然而,由于目前大部分高校都没有开设R语言课程,这就导致很多人不知道如何着手学习R语言. 对于初学R语言的人,最常见的方式是:遇到不会的地方,就跑 ...

随机推荐

  1. bert一些思考

    bert结构 首先是embdding lookup,[batch * seq]-->[batch, seq, hidden] 然后是加个mask embdding和type embdding和p ...

  2. window安装nginx,并解决前端跨域问题

    window 安装 nginx 流程 第一步:下载nginx http://nginx.org/en/download.html 第二步:下载完成后,解压到指定目录文件,启动nginx 进入nginx ...

  3. 编译安装php-fpm并添加nginx支持

    编译安装php-fpm 环境准备 yum -y install gcc automake autoconf libtool make install gcc gcc-c++ glibc bison b ...

  4. 【转载】matlab常用函数

    第一篇:Matlab软件函数 一.软件操作函数 1)命令窗口函数: clc:清空命令窗口,使用向上箭头翻看命令. open:打开文件,文本文件(*.doc),可执行文件(*.exe),图形文件(*.f ...

  5. 文献学习——A Deep Dive into Conflict Generating Decisions

    A Deep Dive into Conflict Generating Decisions Md. Solimul Chowdhury, Martin Müller, Jia-Huai You:A  ...

  6. Python爬虫iP被封的怎么办?

    对于经常做数据爬虫的程序员来说,除了要写出简洁方便的代码.还需要解决的是网站反爬的问题.有时候我们在爬取数据的时候突然报出错或者目标网站错误代码. 比如说:403 Forbidden错误," ...

  7. 字符节点流--> 桥装换流

    输出 存值 用法1创建字节输出节点流FileOutputStream fos = new FileOutputStream("存入文件的路径");2创建桥转换流,按照指定的字符编码 ...

  8. 十大经典排序之桶排序(C++实现)

    桶排序 桶排序是计数排序的升级版.它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定 思路: 根据数据规模,初始化合理桶数 将数列中的数据按照桶的规模进行映射,尽量保证数据被均匀的分布到桶 ...

  9. 1007.Django模型基础02

    一.常用的查询 常用的查询方法(注:User为app项目): 获取所有的记录: rs = User.objects.all() 获取第一条数据:rs = User.objects.first() 获取 ...

  10. 错误小记录: python取余操作

    -23 % 3 >>>1 23%-3 >>>-1 -23%-3 >>>-2 在计算机语言中,同号的整数运算,所有语言都遵循尽量让商小的原则,所以 ...