rlgallery-misc/py/stats.py

38 lines
931 B
Python
Raw Permalink Normal View History

#!/usr/bin/python3
import math
import psycopg2
import 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:.3}".format(i, actual, predicted))
high = max(scores)
print("Max: {0} {1:.3}\n".format(high, 1 - cdf(high)))
cur.close()
conn.close()
exit()