首页 > 解决方案 > 计算在某些上限之间获得目标值所需的增量

问题描述

我正在尝试创建一种我可以使用的方法来计算我的游戏机会。

例如:当玩家达到 25 级时,某件事会解锁,一旦他们达到 225 级(该技能的最大值),我需要它说事件发生的几率为 25%。

我需要一种方法,这样我就可以插入所需的级别、最高级别、当前级别和最大机会并计算他们当前的技能,这需要是一个常量变量,但在 25 级时本身就是变量,然后在 225 级时等于 25%

我尝试使用

maxChance * (currentLevel - requiredLevel) / maxLevel - requiredLevel

但这种方法在 225 级时有 25% 的机会在 224 级。

我认为由于变量是 200 个数字,因此它可以提供一个很好的用户友好值,但它似乎停止在 224。

注意:我使用百分比作为小数,所以 0.25 = 25%。此外,我的解释可能看起来很复杂,因为我自己也很困惑,如果需要,我可以尝试更好地解释这一点。

标签: java

解决方案


请注意,您有 201 个(不仅仅是 200 个)数字:在 25 级时,机会从 0 增加到 X。然后在随后的 200 个级别中,它再次增加 X。所以你需要

X * 201 = maxChance

或者,使用requiredLeveland maxLevel

X * (1 + maxLevel - requiredLevel) = maxChance

因此

X = maxChance / (1 + maxLevel - requiredLevel)

那么currentLevel机会是

chance = max(currentLevel + 1 - requiredLevel, 0) * maxChance / (1 + maxLevel - requiredLevel)
       = max(currentLevel + 1 - 25, 0) * 0.25 / 201

推荐阅读