【问题标题】:Partition Integer randomly随机分区整数
【发布时间】: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


【解决方案1】:
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

【讨论】:

    猜你喜欢
    • 2014-12-30
    • 2012-12-09
    • 2016-04-15
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 2010-11-25
    相关资源
    最近更新 更多