如@markus所示,您可以使用
prob
对此的论证。这是另一个主意
v <- sample(c(sample(1:2, 90, replace = TRUE), sample(3:5, 10, replace = TRUE)))
首先生成90%(即这里的90个元素),包括
1,2
然后将剩下的10%(即10)分别洗牌,再洗牌。
显然,
length(which(v %in% 1:2)) / length(v)
# [1] 0.9
编辑
这里是更一般的情况
# size of final vector
n <- 100
# percentages
p1 <- 0.935
p2 <- 1 - p1
# calculate number of elements (using round)
n1 <- round(p1*n)
n2 <- n - n1
# get final vector
v <- sample(c(sample(1:2, n1, replace = TRUE), sample(3:5, n2, replace = TRUE)))
# Note:
length(which(v %in% 1:2)) / length(v)
# [1] 0.94
请注意,例如,通过设置
n <- 100*10
.