计算游戏的高分表

时间:2011-09-04 03:21:16

标签: python google-app-engine math

我需要创建一个函数/方法(在python中)来计算高分“排行榜”。每位玩家将玩过任意数量的游戏,每轮获得一个分数。我想知道对排名最高的球员进行排序的最佳方式是什么(考虑得分和轮数)。每轮的可能得分为F,D-,D,D +,C-,C,C +,B-,B,B +,A-和A.

显然,简单的平均值不起作用,因为它没有考虑所发挥的轮次数。什么是建立公平分类功能的最佳方式?

编辑:我一直在阅读一些非常好的答案,我想稍微澄清一下我的问题。我希望球员得分和他们所打出的回合数量都能以一种公平的方式计入他们的排名。意味着具有20个B的玩家应该比具有5个A的玩家具有更高的等级。 基本上高分应该反映一般的努力和技巧“轮次数PLUS得分”意味着他们的排名应该越高。

编辑2:在阅读答案之后,我认为最好的方法是在所有轮次中简单计算玩家积分总数。我不确定将绿色支票分配到哪个答案,因为你们都是正确的。

2 个答案:

答案 0 :(得分:2)

你要问的是我们如何定义“好”的球员,这不是一个容易的问题。正如您所提到的,根据您的游戏设计,简单的平均得分或挑选最高得分将不是理想的答案。

我建议您在设计自己的播放器评级系统之前阅读有关国际象棋及其他修改版本的ELO rating system

一种简单而可行的方法是你可以设置一个窗口(比如10个最近的游戏)并使用窗口的平均分数。玩游戏少于此窗口的玩家将处于“处于安置”状态。同样,这不是一个简单的问题,很大程度上取决于你的游戏是什么。祝你好运!

[UPDATE]

我认为你的游戏是玩家与玩家。如果没有,这是另一个故事。无论您玩多少次游戏,大多数游戏都会保持最高分,这将成为您在排行榜中的入口。既然你没有说你的游戏,我不知道为什么它不公平。正如我之前提到的,你可以设置一个平均窗口。得分或最高分。您甚至可以每月重置排行榜,也可以删除一周没有玩过的玩家。这一切都取决于你的游戏和你想要的。请记住,无论你做什么,都要确保规则对玩家来说非常清楚,否则他们会很容易感到沮丧和沮丧。

答案 1 :(得分:2)

有很多方法可以做到这一点。试试这个例子,让F-A为0-11(你可以自己制作;但是要考虑到难度),所以每个得分都比前一个得分高一个。对于您玩的每个游戏,您都会得到一个分数(从0到11)。创建总分并每次添加游戏分数到总分。这样,如果一个人收到7个A,那个是77,而一个收到7个A的人获得70分,那么就简单地对它们进行排序。每个功能当然都有其缺点。这个功能并不是“最好的”,考虑到20 B将超过7 A,即使7 A是一个更好的分数。如果你能给我更多关于你如何对它们进行排名的详细信息,那么降低算法就会容易得多。