Numbers-生成随机数

问题

你想要生成随机数。

方案

要生成均匀分布的随机数,可以使用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 诗翔

人该是自己生活的主宰,而不是别人手里的行货