本节主要介绍了几个随机数生成函数。
sample函数
> sample(1:6, 10, replace = TRUE)
[1] 5 4 3 2 6 1 3 2 4 4
> sample(1:6, 10, replace = FALSE)
Error in sample.int(length(x), size, replace, prob) :
cannot take a sample larger than the population when 'replace = FALSE'
> sample(1:20, 10)
[1] 17 12 8 6 3 13 15 16 19 18
> flips <- sample(c(0, 1), 100, replace = TRUE, prob = c(0.3, 0.7))
> flips
[1] 1 1 1 1 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 1 0 1 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 0 1
[84] 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1
> sum(flips)
[1] 75
replace
参数表示有放回采样,即采样过的数字,在下一次可能还会采样到,prob=c(0.3, 0.7)
表示采样0的概率是0.3,采样1的概率是0.7。
rbinom函数
> flips2 <- rbinom(100, size=1, prob = 0.7)
> flips2
[1] 1 1 1 1 0 1 1 1 0 0 0 0 1 0 1 1 1 0 0 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1
[84] 1 0 1 1 1 0 0 1 0 1 1 1 1 0 1 1 1
> sum(flips2)
[1] 71
rbinom
是生成服从多项式分布的随机数,
第一个参数100
是采样的次数, size
的采样的范围,为1,代表在0~1之间采样,如果是100,就是0~100,后面的prob
表示1的采样概率。
rnorm函数
> rnorm(10)
[1] 0.08586584 -0.53955607 0.27257112 0.75923112 -1.20822757 -0.58315942 0.01739660 -0.19339885 -1.78293389 -1.42738715
> rnorm(10, mean = 100, sd = 25)
[1] 92.25129 79.72832 128.43447 126.73342 111.29187 117.49374 78.45989 119.11619 97.62143 54.33558
rnorm
是正太分布
rpois函数
> rpois(5, lambda = 10)
[1] 8 11 10 10 7
> my_pois <- replicate(100, rpois(5, 10))
> my_pois
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 12 16 9 7 8 11 12 11 7 10
[2,] 13 18 10 8 11 14 5 7 9 11
[3,] 8 11 7 9 18 11 12 8 10 11
[4,] 7 11 8 8 11 9 10 15 11 11
[5,] 8 12 8 6 9 10 6 9 10 10
... #节省篇幅,我省略了
[,95] [,96] [,97] [,98] [,99] [,100]
[1,] 10 12 13 5 10 9
[2,] 11 8 12 10 6 13
[3,] 9 12 8 10 7 14
[4,] 3 14 4 9 18 9
[5,] 10 8 7 16 11 10
> cm <- colMeans(my_pois)
> hist(cm) # 如图所示
rpois
是泊松分布