如何从总积分和已知因素中获得用户级别?

时间:2015-01-20 23:14:19

标签: math pseudocode

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

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

我希望将等级提高3倍,而第一等级只有1点。

所以,我会按照以下步骤进行:

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

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

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

1 个答案:

答案 0 :(得分:1)

最简单的方法是在您的语言中使用等效的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));
}

等等。

如果这种方法对你的目标语言的影响太慢,那么就按照你提出的建议:循环中的划分。