【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指数分布
rfF分布
rgammaGamma分布
rgeom几何分布
rhyper超几何分布
rlogisLogistic分布
rmultinom多项式分布
rpois泊松分布
rtt分布
rchisq卡方分布

参考:http://bbs.pinggu.org/thread-193449-1-1.html

转载请注明出处:https://blog.csdn.net/qiao_wan/article/details/81980404

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐