问题
你想要生成随机数。
方案
要生成均匀分布的随机数,可以使用runif()
函数。默认,它的范围是从0到1.
runif(1)
#> [1] 0.09006613
# 得到4个数字的向量
runif(4)
#> [1] 0.6972299 0.9505426 0.8297167 0.9779939
# 得到3个从0到100变化的向量
runif(3, min=0, max=100)
#> [1] 83.702278 3.062253 5.388360
# 得到从0到100变化的整数
# 使用max=101 因为它永远不可能等于101。 这里利用的floor函数是用来向下取整数的
floor(runif(3, min=0, max=101))
#> [1] 11 67 1
# 这个方式的结果一样
sample(1:100, 3, replace=TRUE)
#> [1] 8 63 64
# 生成不可替换(就是不能再取)的整数
sample(1:100, 3, replace=FALSE)
#> [1] 76 25 52
要生成服从正态分布的数字,使用rnorm()
。默认均值是0,标准差是1。
rnorm(4)
#> [1] -2.3308287 -0.9073857 -0.7638332 -0.2193786
# 使用不同的均值和标准差
rnorm(4, mean=50, sd=10)
#> [1] 59.20927 40.12440 44.58840 41.97056
# 为了检查这个分布是否正确,给随机数画直方图
x <- rnorm(400, mean=50, sd=10)
hist(x)
注意
如果你想要你生成随机数的结果可重复,参看../Generating repeatable sequences of random numbers。
其他
这里作者给出了生成随机数的一些简单示范,并没有介绍一些常见的函数。关于常见的数学、统计、概率和字符函数,大家可以参考我之前做的笔记R实战——数值与字符处理函数。
by 诗翔