我希望为游戏网站上的用户创建一个排名系统。
该系统应基于加权获胜百分比,加权元素是所玩游戏的数量。
例如:
55胜2负=96%胜率
1胜0负=100%胜率
第一个记录应该排名更高,因为他们的获胜次数更多。我确信数学非常简单,我就是无法理解它。任何人都可以帮忙吗?
ELO 更彻底,因为它在计算输赢时会考虑对手的实力,但如果对手是随机匹配的,一个简单且非常有效的方法是:
(赢 + 常数 * 所有玩家的平均赢百分比)/(赢 + 输 + 常数)
因此,对于 0 场比赛,该公式是所有玩家的平均值,随着您参加的比赛次数的增加,该公式会收敛于实际记录。该常数决定了它执行此操作的速度,您可能可以选择 5 到 20 之间的值。
是的,它“超级简单”:
Percentage = Wins * 100.0 / (Wins + Losses)
要舍入到您通常使用的整数round
或Math.round
(但您没有指定编程语言)。
该值可以使用给定的比率根据获胜次数加权:
Rank = Wins * Wins / (Wins + Losses)
但是还有其他系统可以更好地理解这个问题,比如 Elo(见我的评论)。
另一种可能性是我对如何订购这些“有用”分数的回答?. 基本上,使用获胜次数来确定玩家赢得比赛的可能性的可能性范围,然后取低端。对于任何合理的置信水平选择,这使得 55-2 击败 1-0。(没有理由不这样做,我建议将其设置为 50% - 详情请参阅帖子,这实际上非常简单。)
作为一个小的技术问题:我已经看到了一些使用 Wald 区间而不是 Agresti-Coull 的建议。实际上,它们对大输入给出了相同的结果。但是,如果游戏数量可能很少,那么有充分的理由更喜欢 Agresti-Coull。(顺便说一句,这个想法是我自己提出来的——虽然我肯定不是第一个——后来才发现它有点标准。)
分数如何=(每胜分)*(胜数)+(每败分)*(败数),其中每胜分是一些正数,每场失分是一些负数,选择适用于你申请。