单个值,为整数或null
单个值,为正整数不为null
布尔值,true为重复,false为不重复
单个值,为小于1的向量或null
本网站基于R语言的blockrand(v1.5)包实现随机化。此功能为临床试验(或任何每次只接受一个受试者的实验)创建随机分配。随机化在区块内完成,以便在整个试验过程中,治疗之间的平衡保持接近相等。
所谓随机数,实际是“伪随机数”, 是从一组起始值(称为种子), 按照某种递推算法向前递推得到的。 所以从同一种子出发,得到的随机数序列是相同的。
sample(x, size, replace = FALSE, prob = NULL)
sample.int(n, size = n, replace = FALSE, prob = NULL,
useHash = (!replace && is.null(prob) && size <= 2="" n="" &&=""> 1e7))
【x】:由一个或多个可供选择的元素组成的向量,或正整数。
【n】:一个正数,可供选择的项目的数量。
【size】:一个非负整数,给出可供选择的项目的数量。
【replace】:抽样是否需要更换?
【prob】:一种概率权重向量,用于获得被采样向量的元素。
【useHash】:逻辑指示是否应该使用算法的哈希版本。只能用于参数【replace】 = FALSE,参数【prob】 = NULL和 参数【size】 ≦ n/2,并且实际上应该用于较大的参数【n】,因为参数【useHash】= FALSE将使用与n成比例的内存。
对于一个长度为参数【size】的向量,其元素取自参数【x】或整数 1:x。
对于sample.int,长度为参数【size】的整数向量,元素从 1:n开始,或者当参数【n】大于等于2的31次方时,是双精度向量。
如果参数【x】的长度为 1,是数值型(在 is.numeric 的意义上)并且参数【x】 ≥ 1,则通过sample从 1:x 进行抽样。请注意,当调用(例如sample(x))中参数【x】的长度变化时,此便利特性可能会导致不期望的行为。
此外,参数【x】可以是任何长度和整数子集有意义的 R 对象:这些操作的 S3 或 S4 方法将酌情分配。
对于 sample, 参数【size】的默认值是从第一个参数推断出的项数,因此 sample(x)生成x元素的随机排列(或1:x)。
允许要求 n = 0 或长度为 0 参数【x】的 size = 0 样本,但否则需要 n > 0 或正长度(x)。参数【n】或参数【x】的非整数正数值将被截断为下一个最小的整数,该整数不得大于 .machine$integer.max。
可选的参数【prob】可用于给出一个权重向量,用于获取被采样向量的元素。它们的和不需要等于1,但它们不应该是负的,也不应该都是0。
如果参数【replace】为假,则依次应用这些概率,即选择下一个项目的概率与剩余项目中的权重成正比。在这种情况下,非零权重的数量必须至少为参数【size】。
sample.int 是一个裸接口,其中参数【n】和参数【size】都必须以整数形式提供。
参数【n】可以大于 integer 类型的最大整数,不超过 double 类型中可表示的最大整数。只支持均匀采样。使用两个随机数来保证大整数的均匀抽样。
3. Random Samples and Permutations
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
Ripley, B. D. (1987) Stochastic Simulation. Wiley.
RNGkind(sample.kind = ..) about random number generation, notably the change of sample() results with R version 3.6.0. CRAN package sampling for other methods of weighted sampling without replacement.
# NOT RUN {
x <- 1:12
# a random permutation
sample(x)
# bootstrap resampling -- only if length(x) > 1 !
sample(x, replace = TRUE)
# 100 Bernoulli trials
sample(c(0,1), 100, replace = TRUE)
## More careful bootstrapping -- Consider this when using sample()
## programmatically (i.e., in your function or simulation)!
# sample()'s surprise -- example
x <- 1:10
sample(x[x > 8]) # length 2
sample(x[x > 9]) # oops -- length 10!
sample(x[x > 10]) # length 0
## safer version:
resample <- function(x, ...) x[sample.int(length(x), ...)]
resample(x[x > 8]) # length 2
resample(x[x > 9]) # length 1
resample(x[x > 10]) # length 0
## R 3.x.y only
sample.int(1e10, 12, replace = TRUE)
sample.int(1e10, 12) # not that there is much chance of duplicates
# }