view py/stats.py @ 13:d34f2e40e67d

Add links to the Advanced Rogue 5 page.
author John "Elwin" Edwards <elwin@sdf.org>
date Fri, 14 Sep 2012 22:53:16 -0700
parents 5ba2123d2c20
children 25843238434a
line wrap: on
line source

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