【问题标题】:Algorithm to calculate weighted distribution ratio计算加权分配比率的算法
【发布时间】:2017-06-17 17:24:16
【问题描述】:

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

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

  • B1 - 重量:0.5
  • B2 - 重量:0.5
  • B3 - 重量:0.25

那么百分比将是:

  • B1 - 40% 的项目 = 8 个项目
  • B2 - 40% 的项目 = 8 项
  • B3 - 20% 的项目 = 4 个项目

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

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

【问题讨论】:

    标签: algorithm math distribution buckets


    【解决方案1】:

    我认为您可以将每个桶的重量除以所有物品的总重量,以找出每个桶应承受的物品的百分比。

    但是,如果项目数和存储桶重量不均等,则会出现一个小问题。为了举例,让我们考虑以下场景:

    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)
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 完美,我知道这很简单,但我只是完全画了一个空白。此方法可按需使用。
      猜你喜欢
      • 1970-01-01
      • 2012-04-19
      • 2016-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多