python - 在 3 个“桶”之间分配点的算法
问题描述
我正在尝试编写一个算法来在系统中的 X 个规则之间分配 100 个加权点,其中规则具有 Y 个不同的权重之一。例如:
如果我在系统中有 9 条规则,其中 3 条规则设置为高优先级,2 条规则设置为中优先级,4 条规则设置为低优先级,则积分将按如下方式分配:
High (3x) - 20 per rule (60 points)
Med (2x) - 10 per rule (20 points)
Low (4x) - 5 per rule (20 points)
总分 100 分
所有的权重可能并不总是存在。例如,可能有 1 条高规则和 1 条低规则、1 条中等规则(将获得全部 100 分)等。
我一直无法找到一种方法来完成这项工作,部分原因是我不知道这种类型的操作叫什么。任何帮助,将不胜感激。
解决方案
您可以总结您的规则权重 ( S = sum(rule_num[i] * rule_weight[i])
) 并将其与 100 进行比较。您应该100/S
为每个规则分配分数,而不是为规则分配 1 分。
rule_weights = (20, 10, 5)
rule_counts = (3, 2, 4)
s = sum([w * c for (w, c) in zip(rule_weights, rule_counts)])
assignment = [100 / s * w * c for (w, c) in zip(rule_weights, rule_counts)]
这取决于您在非整数点数的情况下该怎么做。
推荐阅读
- python - 为什么我的列表在函数中被修改后会恢复到原来的状态?
- c++ - C++ 多线程:非原子变量的可见副作用
- jersey - 将单例服务注入 JAX-RS/Jersey 资源的最佳方法是什么?
- active-directory - Delphi IPWorks LDAP PASSWD_CANT_CHANGE
- asp.net-core - Blazor Server App or React for Interactive Web UI
- mongodb - MongoDB分组和最大项目?
- java - 在 Java 中拆分包含姓、名和首字母的字符串
- java - 如何在 dockerized Spring Boot 应用程序中启用 https(找不到 PKCS12)
- ruby-on-rails - 无法检测到 rake 任务,NameError: undefined local variable or method 'config' for main:Object
- input - sas数据集中具有相同名称的不同变量