Lua 中的倒数指数

我有一个算法来计算达到某个等级所需的经验值。 但是我不知道如何根据经验值获取所需的等级。

local function NextLevelXP(level)
    return math.floor(1000 * (level ^ 2.0))
end
print(NextLevelXP(7)) -- 输出:49000

现在我想根据经验值获取等级,类似于:

local function MagicFunctionThatWillLetMeKnowTheLevel(exp)
   return --[[这里是数学魔法]]
end
print(MagicFunctionThatWillLetMeKnowTheLevel(49000)) --输出:7
print(MagicFunctionThatWillLetMeKnowTheLevel(48999)) --输出:6

我尝试过一些更糟糕和奇怪的算法,但没有成功。

原文链接 https://stackoverflow.com/questions/69785969

点赞
stackoverflow用户7396148
stackoverflow用户7396148

这可以简化:

local function NextLevelXP(level)
    return math.floor(1000 * (level ^ 2.0))
end

如果 level 总是一个整数,那么 math.floor 是不必要的。

要反转这个公式,你可以这样做:

local function CurrentLevelFromXP(exp)
    return math.floor((exp / 1000) ^ (1/2))
end

在这里,必须对值进行 floor 操作,因为你会得到级别之间的值,(像7.1, 7.5, 7.8)。为了反转乘以1000的操作,我们除以1000,为了反转指数操作,我们使用指数的逆,这种情况下,2 变成了 1/2 或者 0.5。


同时,对于 ^2,你可以直接对值取 math.sqrt

2021-10-31 15:46:47