将N个项目均匀分配到C箱

时间:2017-05-25 11:14:19

标签: algorithm uniform-distribution

我有很多项 N ,我想在一些 C 箱中统一分发它们。我的第一个是生成0到1之间的随机双数,然后将它与数字 N 相乘,但它没有像我预期的那样工作。我们目前正在开发一个Java项目,但通用算法没问题。

垃圾箱没有特定容量,数字没有重量

2 个答案:

答案 0 :(得分:0)

鉴于所有项目和箱子都是相同的,我们可以使用以下简单方法,这绝对不是最有效的方法,但它很容易且有效。

创建一个包含序列1到N的向量,并使用一个函数随机调整值(例如Collections.shuffle(values))。然后将第一个N / C项放在第一个bin中,将第二个N / C项放在第二个bin中等。

例如,我们有N = 10项,C = 2箱。我们创建向量val = {1,2,3,4,5,6,7,8,9,10}并使用随机shuffle函数给出val = {4,8,2,1,9,10,5,3,6,7}。然后用它来获得以下两个箱子 bin1:{4,8,2,1,9}和bin2:{10,5,3,6,7}

答案 1 :(得分:0)

您没有通过“均匀分发”来指明您的意思。

存在M = C N 变体,其中N个项目分布到C个区间。所以你可以在0..M-1范围内随机整数,并在C-ary numeral system中表示它以获得随机组合。