view py/stats.py @ 55:e421ea2519ec

dgamelaunch: define user/group by name instead of UID/GID. The user and group might not be created with the UID and GID expected, so it is better to use names. They can be changed to numeric values after installation.
author John "Elwin" Edwards
date Sun, 11 May 2014 08:32:31 -0700
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()