如何将一个整数随机分成n部分,结果可能为零?(优选在R中)例如,将整数5分成3部分并执行4次,我可能会得到以下输出:
[1] 4 0 1 [2] 2 2 1 [3] 0 2 3 [4] 1 1 3
谢谢!
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。
xdyibdwo2#
要生成整数m的随机k-分区(允许零),取1:m的k-1随机均匀样本,对它们进行排序,前置0,然后附加m,然后取差。对于m = 5、k = 3:
m
k
1:m
k-1
0
m = 5
k = 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
2条答案
按热度按时间h9a6wy2h1#
这个包中还有其他有用的功能。本文档将介绍随机抽样和组合link here。
xdyibdwo2#
要生成整数
m
的随机k
-分区(允许零),取1:m
的k-1
随机均匀样本,对它们进行排序,前置0
,然后附加m
,然后取差。对于m = 5
、k = 3
:返回多个随机分区的函数: