Skip to content

Instantly share code, notes, and snippets.

@timtrueman
Created January 24, 2010 22:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save timtrueman/285478 to your computer and use it in GitHub Desktop.
Save timtrueman/285478 to your computer and use it in GitHub Desktop.
def update_elo_score(k=32, defender_rating=1000, attacker_rating=1000, attacker_won=False):
q_a = 10**(defender_rating/400.0)
q_b = 10**(attacker_rating/400.0)
expected_defender_score = q_a / float(q_a + q_b)
expected_attacker_score = q_b / float(q_b + q_a)
print "Expected chance of winning, defender %0.1f%%, attacker %0.1f%%" % (expected_defender_score*100, expected_attacker_score*100)
if attacker_won:
updated_defender_rating = defender_rating + int(k * (0 - expected_defender_score))
updated_attacker_rating = attacker_rating + int(k * (1 - expected_attacker_score))
else:
updated_defender_rating = defender_rating + int(k * (1 - expected_defender_score))
updated_attacker_rating = attacker_rating + int(k * (0 - expected_attacker_score))
return updated_defender_rating, updated_attacker_rating
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment