R实战 第12篇:随机数

由R生成的随机数实际上伪随机数,也就是说,随机数是由某种算法而不是真正的随机过程产生的,随机数生成器需要一个初始值来生成数字,该初始值叫做种子。通过把种子设置为特定的值,可以保证每次运行同一段代码时都能生成相同的随机数。

R使用set.seed(n)函数来设置种子值,n是一个正整数,不同的种子会生成不同的随机数:

set.seed(123)

通常使用sample()函数来生成随机数,R也支持从分布中获取随机数。 

一,随机抽样

从大的数据集中抽样,获取两份随机样本,一份用于构建预测模型,一份用于验证模型的有效性。

sample()函数用于从数据集中(有放回或无放回)抽取大小为size的一个随机样本。

sample(x, size, replace = FALSE)

参数注释:

  • x: x有两个形式,可以是一个向量,也可以是单个正整数值;如果是个正整数值n,那么表示向量1:n;
  • size:从总体中抽样的样本的容量,也就是随机数的数量
  • replace:默认值是FALSE,表示不放回抽样,也就是说,不会重复样本,每个值只能出现一次。

例如,采用不放回抽样方式,从1到7中获得3个随机数:

> sample(7,3,replace = FALSE)
[1] 5 3 4

二,从分布中抽样

可以根据概率分布来生成随机数,大部分的随机数生成函数的名称都是r,函数的返回值小数:

  • runif:生成均匀分布的随机数
  • rnorm:生成正态分布的随机数
runif(n, min = 0, max = 1)
rnorm(n, mean = 0, sd = 1)

这两个随机数生成函数的第一个参数是生成的随机数的数量,其余参数都会影响分布的形状,生成不同的随机数。

例如,从均匀分布中获得5个随机数:

> runif(5,1,10)
[1] 8.564814 8.943688 7.899304 3.898249 1.379053

例如,从正态分布中获得5个随机数:

> rnorm(5,0,1)
[1]  1.2410693  0.1370216 -1.2996452  1.1514089  1.5134475

 

 

参考文档:

 

你可能感兴趣的:(R实战 第12篇:随机数)