计算加权分配比率的算法

Algorithm to calculate weighted distribution ratio

这是我面临的问题。我有一些物品。然后我有不同数量的桶,它们附有重量(0 到 1 之间)。我正在尝试计算应该放入每个桶中的项目的百分比。

例如,假设我有 20 个项目和 3 个桶:

百分比将是:

百分比应加到 100%,这样所有项目都会分配到存储桶中。在上面的例子中,B1 和 B2 的物品数量应该是 B3 的两倍,因为它们的重量是 B3 的两倍;但是,当所有 3 个桶放在一起时,B1 实际获得的项目百分比是 40%。

是否已经有一个算法可以解决这个问题,或者你们中有人知道如何解决这个问题吗?

将所有桶的权重相加,然后用每个桶的重量除以该总和,得出桶占总重量的百分比。

我想你可以用每个桶的重量除以所有物品的总重量来计算每个桶应该承载的物品的百分比。

但是,如果物品的数量和桶的重量分配不均,则会出现一个小问题。为了举例,让我们考虑以下场景:

B1 - weight: 0.15
B2 - weight: 0.15
B3 - weight: 0.70

让我们假设有 23 个项目。

然后我们可以通过将总重量的分数乘以项目总数来计算应该分配给每个桶的项目数:

B1 - weight: 0.15, 3.45 items
B2 - weight: 0.15, 3.45 items
B3 - weight: 0.70, 16.1 items

可以处理这个分数桶问题的一种算法是计算每个桶的项目数,一次一个,然后将余数转移到下一个计算。所以,在这个例子中,我们会这样做:

B1 - 3.45 items, keep 3, rollover 0.45
B2 - 3.45 items + 0.45 = 3.9 items, keep 3, rollover 0.9
B3 - 16.1 items + 0.9 = 17 items (whole number, and last bucket)