Mercurial > hg > rlgallery-misc
diff py/stats.py @ 0:5ba2123d2c20
Put this project under version control, finally.
Scripts for rlgallery.org, using a PostgreSQL backend. The recorder
system is in py/, CGI scripts are in web/.
author | John "Elwin" Edwards <elwin@sdf.org> |
---|---|
date | Wed, 25 Jul 2012 21:59:42 -0700 |
parents | |
children | 25843238434a |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/py/stats.py Wed Jul 25 21:59:42 2012 -0700 @@ -0,0 +1,35 @@ +import math +import psycopg2 +import rlgalldb as rlgall + +def makeExpPDF(lbd): + def lpdf(x): + return lbd * math.exp(-lbd * x) + return lpdf + +def makeExpCDF(lbd): + def lcdf(x): + return 1 - math.exp(-lbd * x) + return lcdf + +conn = psycopg2.connect("dbname=rlg") +cur = conn.cursor() +for game in rlgall.gamelist: + query = "SELECT score FROM {0};".format(game.uname) + cur.execute(query) + scores = [ r[0] for r in cur.fetchall() ] + count = len(scores) + total = sum(scores) + lbd = float(count) / total + cdf = makeExpCDF(lbd) + print "{0}: {1} games, average {2}".format(game.name, count, int(1/lbd)) + for i in range(0, 10000, 1000): + actual = len([ s for s in scores if i <= s < i + 1000 ]) + predicted = (cdf(i + 1000) - cdf(i)) * count + print "{0:5}: {1:4} {2}".format(i, actual, predicted) + high = max(scores) + print "Max: {0} {1}\n".format(high, 1 - cdf(high)) + +cur.close() +conn.close() +exit()