view py/stats.py @ 44:7c789e87ee5d

Rearrange the statistics pages. Move each game's charts onto individual pages. Put links to these pages on /scoring/index.html, instead of dumping all the charts there.
author John "Elwin" Edwards
date Thu, 16 Jan 2014 11:04:45 -0800
parents c045d4dcf88a
children
line wrap: on
line source

#!/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()