【R语言】生成随机数
版权声明:本文为博主原创文章,未经允许不得转载。https://blog.csdn.net/qiao_wan/article/details/81980404
一、sample()函数
1、sample(x, size, replace, prob)
x 表示从x中选取随机数,x可以是一个向量(可以由一个元素或者多个元素组成)。
size表示随机生成的随机数的个数,是一个非负的整数。
replace表示抽取方式(replace = TRUE 表示可放回抽取,replace = FLASE表示不可放回抽取)。
prob表示按照给定的概率抽取,由一个向量组成(默认prob = NULL)。
例1:在1-10中不可放回的随机抽取三个数。
> sample(1:10, 3, replace = FALSE)
[1] 9 7 4
例2:在向量c(1,3,5,7,9)中不可放回的抽取两个数,对应每个数的抽取概率为c(0.9,0.7,0.5,0.3,0.1)。
> sample(c(1,3,5,7,9), 2, replace = FALSE, prob = c(0.9,0.7,0.5,0.3,0.1))
[1] 1 3
例3:在1-10中随机抽取大于5的两个数。
> x <- 1:10
> sample(x[x > 5], 2)
[1] 9 10
2、set.seed()函数
- 设置随机种子,如果设置了随机种子每次的随机数是相同的。目的是方便以后他人进行测试。
例4:设置随机种子,连续两次随机抽取4个数都是一样的。
> set.seed(2018)
> sample(1:10, 4, replace = FALSE)
[1] 4 5 1 2
> set.seed(2018)
> sample(1:10, 4, replace = FALSE)
[1] 4 5 1 2
二、runif()函数:随机生成均匀分布的小数
1、runif(n, min = 0, max = 1)
n表示随机生成小数的个数。
min = 0,max = 1,表示小数的范围在0-1之间。
例5:随机生成10个0-1之间的小数。
> runif(10)
[1] 0.4743142 0.3010486 0.6067589 0.1300121 0.9586547 0.5468495 0.3956160
[8] 0.6645386 0.9821123 0.6782154
2、runif(n, min = a, max = b)
- 表示随机生成n个a-b之间均匀分布的小数。
例6: 随机生成3个4-5之间的小数。
> runif(3, min = 4, max = 5)
[1] 4.806028 4.634180 4.270736
3、runif还有其他三个函数:dunif(), punif(),qunif()
- 与runif()用法类似,具体可通过help(dunif)来查询。
三、rnorm()函数:生成服从正态分布的随机数
1、rnorm(n, mean = 0, sd = 1)
- 生成长度为n的向量,向量中的每一个值服从正态分布。
例7:生成10个服从标准正态分布的随机数。
> rnorm(10,mean = 0,sd = 1)
[1] 0.07479388 0.83917760 -0.11249379 0.39390330 -0.72464590 0.75717210
[7] 0.20276987 -1.19711695 -0.18655595 -0.89571838
2、rnorm(n, mean = m, sd = s)
- 生成n个服从均值为m,方差为s的正态分布的随机数。
例8:生成10个均值为5,方差为4的随机数。
> rnorm(10, mean = 5, sd = 4)
[1] 9.490283 3.238111 5.978007 8.379948 8.422938 9.057634 2.013373 7.240886
[9] 4.903630 4.014727
四、其他
除了上述的常见的生成服从正态分布和均匀分布的随机数,R中还有其他函数用来生成不同概率分布的随机数,常见如下:
函数 | 概率分布 |
---|---|
rexp | 指数分布 |
rf | F分布 |
rgamma | Gamma分布 |
rgeom | 几何分布 |
rhyper | 超几何分布 |
rlogis | Logistic分布 |
rmultinom | 多项式分布 |
rpois | 泊松分布 |
rt | t分布 |
rchisq | 卡方分布 |
参考:http://bbs.pinggu.org/thread-193449-1-1.html
转载请注明出处:https://blog.csdn.net/qiao_wan/article/details/81980404