【发布时间】:2015-07-13 23:14:59
【问题描述】:
如何将一个整数随机分成 n 个部分,结果可能为零? (最好在 R 中)
例如,将整数 5 分成 3 部分并执行 4 次,我可能会得到以下输出:
[1] 4 0 1
[2] 2 2 1
[3] 0 2 3
[4] 1 1 3
谢谢!
【问题讨论】:
-
您只是在寻找
sample(x, size, replace)吗?这会从x中随机抽取size元素。sample(0:5, 3, TRUE)。要这样做 4 次,请使用replicate(4, sample(0:5, 3, TRUE))(或仅绘制 4*3=12 个元素并将向量分成 4 部分)。 -
不完全......我之前看过 sample() 函数,但我认为它没有做我需要的。我希望分区的所有元素的总和为给定数字(在我的示例中为 5),并随机生成这些分区。一种方法可能是写出所有可能的分区,然后使用随机数生成器来选择一个分区。但是,对于大整数,可能的分区数量会变得非常大,这可能是个问题。
-
它的作用和你需要的有什么区别?也许您可以稍微澄清一下这个问题。
-
对不起,我还没解释完就按了回车...
-
expand.grid(0:5, 0:5,0:5)[rowSums(expand.grid(0:5, 0:5,0:5))==5, ]将为您提供所有可能的三元组加起来为 5。您现在可以使用sample。
标签: r