我正在尝试开发一个简单的游戏,其中一组用户可以来玩游戏。根据用户的表现,他们得到正分或负分。
我希望将两个参数考虑在用户的weight
(他已经参加过比赛的次数以及他在这些比赛中的表现)instantaneous skill sets
。这两个组合在一起为每个用户和与其他用户的分数进行比较可能会在当前比赛中给出他的分数。
然后结合得分和之前的评分,我们可能会给用户带来新的评分。
我不想重新发明轮子。我尝试并想出了这个,但这看起来很天真,我不确定在真实场景中的性能如何。
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
请建议一些标准的东西。
谢谢!
答案 0 :(得分:3)
您应该查看chess ratings的计算方式。有一些变化可供选择,但我认为它应该适合您的情况。
答案 1 :(得分:1)
你可以查看国际象棋中使用的ELO评级,如Running Wild所述。或者,您也可以查看帝国时代3中使用的额定功率系统。在this post中,他们解释了它的工作原理以及它们用MSN区域替换旧的ELO评级系统的原因。
答案 2 :(得分:1)
查看Glicko,TrueSkill,Kaggle国际象棋评级竞赛中的不同方法
http://timsalimans.com/how-i-won-the-deloittefide-chess-rating-challenge/
http://blog.kaggle.com/2012/03/20/could-world-chess-ratings-be-decided-by-the-stephenson-system/
我在这里放了一些网址,然后注意到OP是问题:http://www.reddit.com/r/statistics/comments/rsomx/how_do_i_calculate_the_rating_of_a_player_in_a/
答案 3 :(得分:1)
它已经完成here它考虑了以前的文献和其他内容。它还显示了最着名的方法以及它们是如何完成的。