根据重量将百分比分配给项目

Distribute percentage to items based on weight

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

为了 UI 演示目的,我有 100% 的时间分配一些可变数量的项目——也就是说,我没有选择它们。我希望能够指定一个权重,例如,item A 的重要性是 item B 的两倍。如果只有这两项,我的净利润百分比将是 67% 和 33%。如果我添加一个与 item B 同等重要的 item C,我将有 50%、25%、25%。

问题与语言无关,但如果有任何区别,实现语言是 C#。

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

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

您需要为您的商品附加一个 "importance" 系数,其值为 1、2、4,这样您就可以将所有 "importances" 相加并除以 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% 的值。