基于参赛场次加权的玩家排名加权平均值计算相关问题咨询
问题诊断与解决方案
1. 排序不符的直接原因
你使用的公式加权平均 = 平均排名 * (参赛场次/总赛事场次)的计算结果,数值越小代表玩家表现越好:
- 玩家4加权平均为0.957,玩家5为1.031,按升序排序的话玩家4本来就排在玩家5前面,完全符合你的预期。
- 如果你得到了相反的结果,唯一原因是你错误地按照加权平均降序排序了。
2. 现有公式的核心逻辑缺陷
你的公式完全没有实现「避免仅参赛1次就拿第一的玩家占据靠前排名」的需求:
举个极端案例,某玩家仅参赛1场拿到第1名,按公式计算的加权平均为1 * (1/1179) ≈ 0.0008,远低于所有参赛多的老玩家,反而会排在总榜第一位,和你的设计目标完全相悖。
3. 优化方案
改用调整后总得分逻辑,同时奖励更低的平均排名、更高的参赛频次,天然过滤低参赛量的极端值:
调整后得分 = (单场最高名次阈值 - 平均排名) * 参赛场次
说明:
- 单场最高名次阈值可以设为单场参赛的最大人数(比如单场最多20人参赛就设为20),也可以设为所有玩家历史最高平均排名+1
- 最终得分越高,玩家排名越靠前
用你给出的玩家数据测试(单场最高名次阈值设为20):
- 玩家4得分:(20-6)*188 = 2632
- 玩家5得分:(20-15)*81 = 405
玩家4排名远高于玩家5,同时仅参赛1场拿第1的玩家得分仅为19,远低于参赛场次多的老玩家,完全符合你的需求。
内容的提问来源于stack exchange,提问作者jbassking10
相关产品推荐
相关产品推荐

