Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env/python
- #-*- coding: utf8 -*-
- import sys
- def delta(S, E, K=40):
- return K * (S - E)
- def E(Qa, Qb):
- return float(Qa)/(Qa+Qb)
- def Q(elo):
- return 10**(elo/400)
- if __name__ == "__main__":
- eloa, elob, Ka, Kb = None, None, 40, 40
- if len(sys.argv) > 1:
- eloa = float(sys.argv[1])
- if len(sys.argv) > 2:
- elob = float(sys.argv[2])
- if len(sys.argv) > 3:
- Ka = float(sys.argv[3])
- if len(sys.argv) > 4:
- Kb = float(sys.argv[4])
- if not eloa or not elob:
- print "Usage:", sys.argv[0], "<eloA> <eloB> [kA] [kB]"
- print "Calculate elo win/loss of a match between two players"
- print "\teloA, eloB: \tcurrent elo scores (new players start with 100)"
- print "\tkA, kB: \tcurrent K-factors (40 by default; new players start with 200)"
- sys.exit(1)
- Qa, Qb = Q(eloa), Q(elob)
- Ea, Eb = E(Qa, Qb), E(Qb, Qa)
- print "A has elo %8.3f at K = %3d" % (eloa, Ka)
- print "B has elo %8.3f at K = %3d" % (elob, Kb)
- print
- print "Outcome 1: A wins"
- print "\tA gains %7.3f points" % delta(1, Ea, Ka)
- print "\tB loses %7.3f points" % -delta(0, Eb, Kb)
- print
- print "Outcome 2: B wins"
- print "\tA gains %7.3f points" % -delta(0, Ea, Ka)
- print "\tB loses %7.3f points" % delta(1, Eb, Kb)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement