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()