我试图找到一个简单的基于python的算法排名系统。
以下是场景:
将有30个级别,级别1从0分开始。达到30级需要2000分。
随着等级的提高,将需要更多的分数。
例如,从1级到2级可能需要3分。2级到3级可能需要额外加分5分。等级29-30可能需要1200个额外点数。
由于分数将在运行时计算,我还需要一种方法来确定球员处于哪个级别。例如,一个358分的人是什么级别的?
我可以手动设置点数,但2000点的上限每天都会波动,所以这不是一个理想的选择。
我在想一些类似于Google的Pagerank (1-10)的东西,在那里很容易从0到4,但9-10是一个非常困难的成就。
有没有什么简单的片段或提示?
谢谢
发布于 2010-09-30 00:07:47
使用对数刻度。如果你想要一个代码示例:
base = 2 # change to change the rate at which you go through the levels
levels = 30
finalPoints = 2000
scale = levels/math.log(finalPoints, base)
level = math.floor(scale*math.log(points, base))发布于 2010-09-29 23:46:36
通常的解决方案是使用对数刻度。如果你使用以2为底的对数,那么每一级都需要两倍的分数。如果使用以10为底的对数,则每个级别需要10倍的分数。这样,你就可以“弯曲”曲线了。数学上的See the Wikipedia page。
https://stackoverflow.com/questions/3823243
复制相似问题