带权重的习惯追踪器加权平均计算方案技术问询
习惯追踪器加权进度计算问题
我正在开发一款习惯追踪器,支持根据用户输入的不同类别任务完成数据,可视化目标完成进度。目前包含4个任务类别:physical、emotional、financial、professional。
原本的逻辑简单直接:勾选任务完成后计算对应类别的完成百分比,每周对各类别完成百分比取平均,得到周目标完成率。
现在需要新增类别权重分配功能:例如给physical设权重2,代表其重要性为基准的2倍;给financial设权重-1.5,代表其重要性低于基准类别(emotional、professional),远低于physical。
首个原型采用滑块调节权重,移动一个滑块会让其余3个滑块按比例反向移动以保持总权重固定,但这造成了UX问题。
现尝试基于单个类别的权重(及基准值)独立计算得分,但存在明显问题:若部分类别权重过高,加权平均分可能超过100%,甚至出现未完成所有任务却显示100%(或更高,未做min(100, average_complete)处理)的情况。
我亟需找到一种数学方法,实现以下加权平均计算要求:无论权重如何设置,只要有任务完成,结果>0%;只要有任务未完成,结果<100%。
核心问题
- 是否存在无需每次修改权重就重新计算所有值的数学实现方式?
- 若不存在,软件设计中是否有标准的编程/数学方法,可在权重导致结果超出范围时,计算出接近0%或100%的模糊但相对准确的值?
编辑补充
以下为示例数据,每个类别的基准完成分为100:
ID | DONE | CATEGORY | WT | SCORE ____________________________________ 0 | 1 | physical | 2 | 200 ----------------------------------- 1 | 1 | emotional | 2 | 200 ----------------------------------- 2 | 0 | financial | 1 | 0 ----------------------------------- 3 | 0 | professional | 1 | 0
(SCORE计算公式为:DONE * 100 * WT)
预期平均完成率:66.67%
编辑补充2
当前新增负权重后,可能出现得分总和为0或负数,导致加权平均分(除以总权重)为0或负数。统计场景中通常允许负权重,但此处负权重仅代表类别重要性低于基准。
内容的提问来源于stack exchange,提问作者Daveh0
相关产品推荐
相关产品推荐

