如何从总分和已知因素中获取用户等级?
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));
}
以此类推
如果这种方法对你的目标语言来说效果太慢,那么就按照你的建议去做:循环除法。
我知道这是基本的计算,但我有点生疏,我想确保我做对了。
我正在我的网站上实施用户级别系统,我需要在他们的个人资料中显示每个用户的级别。他们已经有了一些分数,我想从中计算出他们处于什么水平。
我想将级别提高 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));
}
以此类推
如果这种方法对你的目标语言来说效果太慢,那么就按照你的建议去做:循环除法。