2010-09-29 52 views
2

我试图找到一个简单的基于python的算法排名系统。30级的Python排名算法

这里的情景:

将有30个级别,1级开始的0分。需要2000分才能达到30级。

随着关卡进展,还需要更多的积分。

例如,从1级到2级可能需要3分。等级2至3可能需要5个额外的积分。 012-等级29-30可能需要1200点加分。

由于分数将在飞行中进行计算,我还需要一种方法来确定玩家是在哪个级别。例如,什么水平是358分的人?

我可以手动设置点,但2000点上限将从全天波动一天,这样是不是理想的选择。

我想类似谷歌的Pagerank(1-10),其中很容易从0到4,但9-10得到的东西是一个非常艰苦的成就。

任何简单的片段或tippets?

谢谢

回答

3

使用对数刻度。如果你想要一个代码示例:

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)) 
+0

很好的例子。我的头痛突然消失了。谢谢! – Louis 2010-09-29 16:33:38

3

通常的解决方案是使用对数尺度。如果您使用日志库2,则每个级别需要两倍的点数。如果您使用日志库10,每个级别需要10倍的点数。这样,您可以“弯曲”曲线。数学为See the Wikipedia page

+0

感谢您的提示。我尝试撞击对数几乎杀了我,只是在开玩笑。它刷新了我的记忆,并使我走向正确的方向。谢谢。 – Louis 2010-09-29 16:37:49