如何对实数进行采样?

How do I sample real numbers?

是否可以使用sample()函数对实数进行采样? (即,从连续分布中抽样,例如 [1,10],这样当我抽样时,我不会得到整数而是实数,例如 5.467。) 如果没有,是否有其他功能可以做到这一点?

sample 的目的是......从有限集中均匀或不均匀地抽样,有无放回。

如果你想要来自另一种分布的样本,这取决于分布,R 中有很多函数可以实现这一点。最常见的是 runif(有界区间上的均匀分布)和 rnorm(正态分布)。

参见 ?sample and ?Distributions in the documentation. A more comprehensive list can be found here

例如:

带替换的统一样本,来自 {1, 2, 3, 4}:

> sample(1:4, 10, replace=T)
 [1] 3 1 4 1 2 1 1 3 4 3

来自 [0, 1] 的均匀样本:

> runif(10)
 [1] 0.6529710 0.1977511 0.7946746 0.6351793 0.9518663
     0.9356524 0.2945506 0.4623502 0.8198065 0.8516961

均值为 0 方差为 1 的正态样本:

> rnorm(10)
 [1] -1.13195127  0.43434313 -0.44183752  0.13632993  0.75902968  
      0.76079877  0.37919727  0.41350485  0.76233633  0.09400158

这些函数可以采用参数:例如,runif(n, a, b) 从区间 [a, b] 中产生 n 个样本。