Advertisement
Guest User

elo.py [xonotic/xonstats]

a guest
Aug 10th, 2012
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.23 KB | None | 0 0
  1. #!/usr/bin/env/python
  2. #-*- coding: utf8 -*-
  3.  
  4. import sys
  5.  
  6. def delta(S, E, K=40):
  7.     return K * (S - E)
  8.  
  9. def E(Qa, Qb):
  10.     return float(Qa)/(Qa+Qb)
  11.  
  12. def Q(elo):
  13.     return 10**(elo/400)
  14.  
  15. if __name__ == "__main__":
  16.     eloa, elob, Ka, Kb = None, None, 40, 40
  17.     if len(sys.argv) > 1:
  18.         eloa = float(sys.argv[1])
  19.     if len(sys.argv) > 2:
  20.         elob = float(sys.argv[2])
  21.     if len(sys.argv) > 3:
  22.         Ka = float(sys.argv[3])
  23.     if len(sys.argv) > 4:
  24.         Kb = float(sys.argv[4])
  25.  
  26.     if  not eloa or not elob:
  27.         print "Usage:", sys.argv[0], "<eloA> <eloB> [kA] [kB]"
  28.         print "Calculate elo win/loss of a match between two players"
  29.         print "\teloA, eloB: \tcurrent elo scores (new players start with 100)"
  30.         print "\tkA, kB: \tcurrent K-factors (40 by default; new players start with 200)"
  31.         sys.exit(1)
  32.  
  33.     Qa, Qb = Q(eloa), Q(elob)
  34.     Ea, Eb = E(Qa, Qb), E(Qb, Qa)
  35.  
  36.     print "A has elo %8.3f at K = %3d" % (eloa, Ka)
  37.     print "B has elo %8.3f at K = %3d" % (elob, Kb)
  38.    
  39.     print
  40.  
  41.     print "Outcome 1: A wins"
  42.     print "\tA gains %7.3f points" %  delta(1, Ea, Ka)
  43.     print "\tB loses %7.3f points" % -delta(0, Eb, Kb)
  44.  
  45.     print
  46.  
  47.     print "Outcome 2: B wins"
  48.     print "\tA gains %7.3f points" % -delta(0, Ea, Ka)
  49.     print "\tB loses %7.3f points" %  delta(1, Eb, Kb)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement