I am trying to develop a simple game where a group of user can come and play the game. Based on the performance of the user, they get positive score or negative score.

I want two parameters to be taken into account user's weight (no. of matches he has played and his performance in those matches) his instantaneous skill sets . These two combined together for each user and compared with other user's score might give his score in the current match.

Then combining the score and previous rating we might arrive at users new rating.

I do not want to reinvent the wheel. I tried and came up with this, but this looks pretty naive and i am not sure how the performance will be in real world scenario.

Pos[i] and Neg[i] are the positive and negative score of the users in a match.

Step1: Calculate the average score of n people `for i in range(1, N): sum = sum + Pos[i] Average = sum/N` do the same for negative score. Step2: Calculate the Standard Deviation (SD) Step3: Calculate the weight of the user as follows say the user has played M matches, his weight W will be Mxabs((sum(POS[i])/N1 - (sum(NEG[i])/N2)) (where N1 is the number of times he has scored positive scores and N2 the number of times he scored negative result) Step4: Current Score = (POSi - SD)xW Step5: His New Rating = Old Rating + Current Score

Please suggest something standard.