2017-05-25 41 views
0

我有一些物品N我想将它们均匀分配到若干C箱中。我的第一个目的是生成一个0到1之间的随机双数,然后将它与数字N相乘,但它没有按我的预期工作。我们目前正在开发一个Java项目,但一般算法会很好。将N物品均匀分配到C箱

垃圾箱没有具体的容量和数量没有权重

+0

是否所有项目具有相同的尺寸/重量,即有在垃圾箱没有容量限制? – Michiel

+0

不,没有容量的垃圾箱,没有重量我应该提到,现在将编辑!谢谢 – Fotis

+0

是否订购了箱子(意味着只将物品1,2,3放入箱子1中与将箱子放入箱子5不同)?物品可以不平均分成多个箱子,例如箱= 2,物品= 1,2,3?一些示例输入和输出总是有助于澄清问题。 – Dukeling

回答

0

由于所有项目和箱相同,我们可以用下面简单的办法,这是defintely不走最有效的方式,但很容易和作品。

创建包含序列1至N的矢量和使用函数来随机洗牌的值(例如,Collections.shuffle(values))。然后,第一N/C物品放置在第一仓,在第二个,等等以下N/C项..

实施例,我们有N = 10个项目和C = 2个箱。我们创建矢量val = {1,2,3,4,5,6,7,8,9,10}并使用随机洗牌功能给出val = {4,8,2,1,9,10,5,3,6,7}。然后用这个来得到以下两个bin: bin1:{4,8,2,1,9}和bin2:{10,5,3,6,7}

0

您还没有指定“均匀分配“。

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

+0

“均匀分布”,大概是指每个仓项目的数量相等(或与项目-计数在斌1的区别,如果物品%垃圾箱!= 0) 。 – Dukeling

+0

@Dukeling我们可以想出这个术语的许多含义:)希望作者能够澄清他的需求。 – MBo

+0

@Dukeling这是我需要有一些让说,100和10个箱,一个箱子可以有12个项目,另外10等等... – Fotis