Skip to content

Instantly share code, notes, and snippets.

@idkwebdev
Created April 4, 2022 01:11
Show Gist options
  • Save idkwebdev/dd51ae27acd22845a5885d463d5b7ea1 to your computer and use it in GitHub Desktop.
Save idkwebdev/dd51ae27acd22845a5885d463d5b7ea1 to your computer and use it in GitHub Desktop.
function eloRating(player, opponent, score, K = 20) {
// Score is 1 if player won, 0 if opponent won, and 0.5 if a draw
// Information: https://www.omnicalculator.com/sports/elo
let difference = K * (score - (1 / (1 + 10**((opponent - player)/400))))
difference = Math.round(Math.abs(difference))
if (score >= 1) {
player += difference
opponent -= difference
} else if (score <= 0) {
player -= difference
opponent += difference
} else {
if (player < opponent) {
player += difference
opponent -= difference
} else {
player -= difference
opponent += difference
}
}
return { player: player, opponent: opponent, difference: difference}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment