

Ask HN: Please suggest changes/updation to the following rank calculator - gamebit07

Lets assume i have a game X. A group of N number of people play the game and each of them either score  <i>POSi</i> or <i>NEGi</i><p>I have thought of the following mathematical model , not sure how correct it is, but this is what i came up with. If anyone knows anything better/simpler/standard please mention, also you might suggest changes or point out flaws in the current model. 
Calculating for users assuming they score Positive scores.<p>Step1: Calculate the average score of n people
`for i in range(1, N):
   sum = sum + POSi
Average = sum/N`<p>Step2: Calculate the Standard Deviation (<i>SD</i>)<p>Step3: Calculate the weight of the user as follows
say the user has played <i>M</i> matches, his weight <i>W</i> will be <i>Mxabs((sum(POSi)/N1 - (sum(NEGi)/N2))</i><p>(where <i>N1</i> is the number of times he has scored positive scores and <i>N2</i> the number of times he scored negative result)<p>Step4: Current Score = <i>(POSi - SD)xW</i><p>Step5: His <i>New Rating = Old Rating + Current Score</i><p>Maybe it sounds naive, but this is what i could think of, suggestions are invited.<p>Thanks!
======
natep
I'm not sure what POSi or NEGi are (you can have multiple winners, and
everyone else loses?), but it seems like you want an algorithm that takes past
performance into account, and, and allows for variability in performance. You
need to keep track of 2 numbers for each player, their rank and their weight.
I don't see any reason why your algorithm would do this accurately by design,
but it might work out.

Have you heard of TrueSkill[1,2]? It supports multiple players in a single
game, and is based on a concrete assumption of what a player's skill is. This
also keeps track of 2 numbers per player, their mean skill and its standard
deviation. The one thing that may be different about it is that there is no
way to tell the algorithm the degree of a win, just the relative rankings of
each player.

[1] <http://research.microsoft.com/en-us/projects/trueskill/>

[2] <http://www.moserware.com/2010/03/computing-your-skill.html>

