如果给出数字和n组,我如何将数字随机分成多个数字?

时间:2014-05-12 08:34:12

标签: r split probability addition

例如,如果数字为100且组数为4,则应该给出任意加上100个数字的4个数字随机列表:

输入数字= 100

组数= 4

可能的输出:

25,25,25,25

10,20,30,40

15,35,2,48

输出应该只生成一个列表。更多面向应用的示例将如何使用R来分组概率1到多个组

4 个答案:

答案 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))