【问题标题】:Distribute percentage to items based on weight根据重量将百分比分配给项目
【发布时间】:2016-05-22 18:51:28
【问题描述】:

我进行了搜索,但找不到与我的问题特别相关的任何内容(或无法恰当地表达它),所以希望如此。

出于 UI 演示目的,我有 100% 分配给可变数量的项目 - 也就是说,我没有选择它们。我希望能够指定一个权重,例如,item A 的重要性是item B 的两倍。如果这些是仅有的两项,那么让我受益的百分比将是 67% 和 33%。如果我添加一个与item B 同等重要的item C,我会得到50%、25%、25%。

问题与语言无关,但实现语言是 C#,如果这有什么不同的话。

是否有适合此目的的算法?我意识到discrete distribution 可以用于选择,但由于我只对报告相关项目的百分比感兴趣以供用户理解,所以我不这样做。我有兴趣输入一组权重并得出百分比。我不熟悉允许这样做的东西。

【问题讨论】:

  • 保留所有项目的计数器(在类似数据结构的哈希表中)和另一个变量total_number_of_items。项目X 的百分比分布将是counter[X] * 100 / total_number_of_items

标签: c# algorithm distribution


【解决方案1】:

您可以使用以下公式计算百分比: 百分比 = 重要项目/重要项目总数

【讨论】:

    【解决方案2】:

    您需要为您的项目附加一个“重要性”因子,其值为 1、2、4,这样您就可以将所有“重要性”加在一起并将其除以 100,以获得每个重要性的百分比。然后将每个项目的百分比相乘得到每个项目的比例。

    所以在你的第一个例子中,你有 1 和 2 的重要性。它们加在一起得到 3。100% / 3 是 33.3%。项目 A 的重要性为 2,因此其百分比为 2 * 33.3 = 66.7%,而项目 B 的重要性为 1,因此其百分比为 1 * 33.3 = 33.3%

    在您的第二个示例中,您的 1 重要性为 2 和 2 的 1,总共为 4. 100% / 4 = 25%。为您提供 A、B 和 C 项的 50%、25% 和 25% 的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      • 2017-05-30
      • 1970-01-01
      • 2021-11-15
      • 2023-04-10
      相关资源
      最近更新 更多