如何通过给定的经验获得水平?

时间:2019-06-05 17:35:46

标签: javascript math

我有一个公式,可以根据特定的水平计算经验,而另一个公式可以根据给定的经验计算水平。 但是第二个函数不会返回期望值。

const levels = 40;
const xp_for_first_level = 1000;
const xp_for_last_level = 1000000;

const getExperience = level => {
  const B = Math.log(xp_for_last_level / xp_for_first_level) / (levels - 1);
  const A = xp_for_first_level / (Math.exp(B) - 1.0);

  const old_xp = Math.round(A * Math.exp(B * (level - 1)));
  const new_xp = Math.round(A * Math.exp(B * level));

  return new_xp - old_xp;
};

const getLevel = experience => {
  const B = Math.log(xp_for_last_level / xp_for_first_level) / (levels - 1);
  const A = xp_for_first_level / (Math.exp(B) - 1.0);

  return Math.ceil(Math.log(experience / A) / B);
};

console.log(getLevel(xp_for_first_level)); // -9
console.log(getLevel(xp_for_last_level)); // 30

预期结果1和40,但返回-9和30。

有人可以帮忙吗?

请问有人启发我吗?

1 个答案:

答案 0 :(得分:0)

我认为公式应该更改,我尝试过此方法,并给出了正确的回报。

const getLevel = experience => {
  const B = Math.log(xp_for_last_level / xp_for_first_level) / (levels + 1);
  const A = xp_for_first_level - 1;
  return Math.ceil(Math.log(experience / A) / B);
};