Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算一个游戏';s高分表_Python_Google App Engine_Math - Fatal编程技术网

Python 计算一个游戏';s高分表

Python 计算一个游戏';s高分表,python,google-app-engine,math,Python,Google App Engine,Math,我需要创建一个函数/方法(python)来计算高分“排行榜”。每个玩家都将玩过任意数量的游戏,每一轮都会得到一个分数。我想知道对排名靠前的球员进行排序的最佳方式是什么(考虑得分和比赛轮数)。每轮的可能得分为F、D、D、D+、C-、C+、B-、B+、B+、A-和A 很明显,一个简单的平均值是行不通的,因为它没有考虑到比赛的轮数。设置公平排序功能的最佳方法是什么 编辑:我在这里读了一些非常好的答案,我想试着澄清一下我的问题。我希望球员的得分和他们打过的回合数以公平的方式计入他们的排名。这意味着一个拥

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

很明显,一个简单的平均值是行不通的,因为它没有考虑到比赛的轮数。设置公平排序功能的最佳方法是什么

编辑:我在这里读了一些非常好的答案,我想试着澄清一下我的问题。我希望球员的得分和他们打过的回合数以公平的方式计入他们的排名。这意味着一个拥有20个B的球员应该比一个拥有5个a的球员级别更高基本上,高分应该反映一般的努力和技能,“打球次数加上他们的分数”意味着他们的排名应该越高


编辑2:在阅读了答案之后,我认为最好的方法是将所有回合的玩家分数相加。我不确定该把绿色支票分配给哪个答案,因为你们都是正确的。

你们问的基本上是我们如何定义“好”球员,这不是一个容易的问题。正如你提到的,根据你的游戏设计,简单的平均分数或选择最高分数并不是一个理想的答案

我建议您在设计自己的玩家评级系统之前,先阅读有关国际象棋和其他修改版本的内容

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

[更新]


我假设你的游戏是玩家对玩家。如果不是,这是另一个故事。无论你玩多少次游戏,大多数游戏都会保持最高分数,这将是你进入排行榜的原因。既然你对你的比赛只字不提,我不知道为什么这不公平。正如我前面提到的,您可以为平均分数或最高分数设置一个窗口。你甚至可以每个月重新设置排行榜,或者删除一周没有上场的球员。这完全取决于你的比赛和你想要什么。请记住,无论你做什么,都要确保规则对球员来说非常明确,否则他们很容易感到沮丧和沮丧

有很多方法可以做到这一点。试试这个例子,让F-A为0-11(你可以自己做,但是要考虑到难度),这样每个分数都比前一个高一分。你玩的每一场比赛都会得到一分(0-11分)。创建一个总分,每次将游戏分数添加到总分中。这样,如果一个人得到7个a,那就是77,而一个人得到7个a-,得分是70,然后简单地对他们进行相应的排序。当然,每种功能都有其缺点。这个函数不是“最佳”,考虑得到20 B的将超过7 A的,即使7 A是一个更好的分数。如果你能告诉我你想如何对他们进行排名的更多细节,那么将更容易得到算法。

为什么每轮平均得分不起作用?它可能会起作用,但我不想鼓励球员只打几轮就获得高分,然后再也不打更多轮,因为害怕每轮得分降低。另外,这是否意味着1轮A的排名将高于20 B的排名?即使你能够从多个答案中获益,你仍然应该通过选择一个答案来解决问题,最好是选择一个最能反映解决方案的答案。如果这真的是一个问题,你可以提供你自己的答案和你使用的确切解决方案,并接受这一点,我编辑了我的问题,试图澄清它。我希望20个B大于或等于7个A。比赛的回合数应该计入球员的排名。谢谢你。我提供给你的应该足够了。它可以让你控制每个人的分数或“权重”;然而,玩得更多总是意味着获得更高的分数(除非你得了F)。这会使游戏的回合数有更高的“权重”,因为获得两次C+比获得a更重要,而这对C+玩家来说并没有显示出多少技能。正如我所建议的,您可以通过更改每个的值来重新平衡,以考虑到难度。例如,如果得分A比得分C困难得多,那么尝试使用更大的分数差距,如:F=0,D-=1,D=3,D+=7,等等。