2

我试图找到一个简单的基于 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 是一项非常困难的成就。

任何简单的片段或提示?

谢谢

4

2 回答 2

3

通常的解决方案是使用对数刻度。如果使用 log base 2,那么每个级别需要两倍的点数。如果使用以 10 为底的对数,则每个级别需要 10 倍的积分。这样,您可以“弯曲”曲线。有关数学,请参阅 Wikipedia 页面

于 2010-09-29T15:46:35.813 回答
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))
于 2010-09-29T16:07:46.950 回答