例如,如果数字为100且组数为4,则应该给出任意加上100个数字的4个数字随机列表:
输入数字= 100
组数= 4
可能的输出:
25,25,25,25
10,20,30,40
15,35,2,48
输出应该只生成一个列表。更多面向应用的示例将如何使用R来分组概率1到多个组?
答案 0 :(得分:6)
rmultinom
在这里可能很方便:
x <- rmultinom(n = 1, size = 100, prob = rep(1/4, 4))
x
colSums(x)
这里我画了一个总大小为100的向量,它被分成4组。
答案 1 :(得分:3)
您可以尝试以下
total <- 100
n <- 4
as.vector(table(sample(1:n, size = total, replace = T)))
## [1] 23 27 24 26
as.vector(table(sample(1:n, size = total, replace = T)))
## [1] 25 26 28 21
as.vector(table(sample(1:n, size = total, replace = T)))
## [1] 24 20 28 28
答案 2 :(得分:1)
说到概率,我认为这是一个好主意:
generate.probabilities <- function(n){
bordersR <- c(sort(runif(n-1)), 1)
bordersL <- c(0, bordersR[1:(n-1)])
bordersR - bordersL
}
它为您提供随机分布中的n个数字,总计为1。
答案 3 :(得分:0)
定义通用性参数
inN <- 100 # input number
nG <- 4 # number of groups
根据存储的想法,我们只需要3个随机数将空间分成4个区域,但需要整数,内部边界可以找到:
sort(sample(inN,nG-1, replace = TRUE))
OP希望通过
找到每个组中的计数diff(c(0,sort(sample(inN,nG-1, replace = TRUE)), inN))