R语言 随机分割整数

epfja78i  于 2023-05-20  发布在  其他
关注(0)|答案(2)|浏览(128)

如何将一个整数随机分成n部分,结果可能为零?(优选在R中)
例如,将整数5分成3部分并执行4次,我可能会得到以下输出:

[1] 4 0 1

[2] 2 2 1

[3] 0 2 3

[4] 1 1 3

谢谢!

h9a6wy2h

h9a6wy2h1#

library(partitions)
t(restrictedparts(5, 3))
[1,] 5 0 0
[2,] 4 1 0
[3,] 3 2 0
[4,] 3 1 1
[5,] 2 2 1

这个包中还有其他有用的功能。本文档将介绍随机抽样和组合link here

xdyibdwo

xdyibdwo2#

要生成整数m的随机k-分区(允许零),取1:mk-1随机均匀样本,对它们进行排序,前置0,然后附加m,然后取差。对于m = 5k = 3

diff(c(0, sort(sample(5, 2, 1)), 5))
#> [1] 1 0 4

返回多个随机分区的函数:

rpart <- function(n, m, k) {
  coldiffs(cbind(0, rowSort(matrix(sample(m, n*(k - 1), 1), n)), m))
}

rpart(10, 5, 3)
#>       [,1] [,2] [,3]
#>  [1,]    2    2    1
#>  [2,]    4    1    0
#>  [3,]    4    1    0
#>  [4,]    1    3    1
#>  [5,]    2    1    2
#>  [6,]    1    1    3
#>  [7,]    3    2    0
#>  [8,]    1    3    1
#>  [9,]    2    3    0
#> [10,]    2    2    1

相关问题