带有30个等级的Python排名算法

2 投票
2 回答
1475 浏览
提问于 2025-04-16 04:45

我在找一个简单的基于Python的排名系统。

这是一个场景:

总共有30个等级,等级1从0分开始。要达到等级30需要2000分。

随着等级的提升,所需的分数会越来越多。

比如,从等级1升到2可能需要3分,从等级2升到3可能需要再加5分。等级29到30可能需要额外的1200分。

因为分数是实时计算的,我还需要一种方法来判断玩家当前的等级。例如,358分的人是哪个等级?

我可以手动设置分数,但2000分的上限每天都会变化,所以这不是一个理想的选择。

我在想,能不能做得像谷歌的PageRank(1-10),从0到4比较容易,但从9到10就很难了。

有没有简单的代码片段或者小技巧?

谢谢!

2 个回答

3

通常的解决办法是使用对数刻度。如果你用的是以2为底的对数,那么每一层级需要的点数就会是之前的两倍。如果你用的是以10为底的对数,那么每一层级需要的点数就会是之前的十倍。这样做可以让曲线“弯曲”得更平滑。想了解更多数学内容,可以查看维基百科页面

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

撰写回答