等级评分算法 elo – JavaScript 实用代码片段

使用Elo评分系统计算两个对手之间的新评分。 它需要一个数组,包含两个预先评分,并返回一个新数组,包含两个后评分。赢家的评分是数组的第一个元素。

使用指数 ** 操作符和数学运算符计算每个对手的期望得分(获胜几率),并计算每个对手的新评级。忽略第二个参数,使用默认的 k-factor 为 32,或提供自定义的 k-factor值。

const elo = ([a, b], kFactor = 32) => {
  const expectedScore = (self, opponent) => 1 / (1 + 10 ** ((opponent - self) / 400));
  const newRating = (rating, i) => rating + kFactor * (i - expectedScore(i ? a : b, i ? b : a));
  return [newRating(a, 1), newRating(b, 0)];
};
elo([1200, 1200]); // [1216, 1184]
elo([1000, 2000]); // [1031.8991261061358, 1968.1008738938642]
elo([1500, 1000]); // [1501.7036868864648, 998.2963131135352]
elo([1200, 1200], 64); // [1232, 1168]

更多代码 JavaScript 实用代码片段 请查看 https://www.html.cn/30-seconds-of-code/

赞(0) 打赏
未经允许不得转载:WEB前端开发 » 等级评分算法 elo – JavaScript 实用代码片段

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

前端开发相关广告投放 更专业 更精准

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏