如何从总分和已知因素中获取用户等级?

How to get a user level from total points and known factor?

我知道这是基本的计算,但我有点生疏,我想确保我做对了。

我正在我的网站上实施用户级别系统,我需要在他们的个人资料中显示每个用户的级别。他们已经有了一些分数,我想从中计算出他们处于什么水平。

我想将级别提高 3 倍,而第一级只有 1 点。

所以,我将按如下方式进行:

level = 0;
factor = 3;
points = 243; //as an example, this would be level 6.

while (points >= 1) {
  points = points/factor;
  level++;
}

你会推荐我做什么?这是最好的方法吗?有没有更有效的方法?我正在寻找性能和可扩展性。

最简单的方法是使用您的语言中 ceiling(log base 3 of (points + 0.5)) 的等价物。 这里的 +0.5 修复了可能的浮点数错误,并允许使用 0 作为点数。

例如 Python:

import math

def levels(points):
    return math.ceil(math.log(points + 0.5, 3))

在C/C++中:

#include "math.h"

int levels(int points) {
    return 1 + (int)(log(points + 0.5) / log(3.0));
}

以此类推

如果这种方法对你的目标语言来说效果太慢,那么就按照你的建议去做:循环除法。