Java 计算在某些上限之间获得目标值所需的增量
我正在尝试创建一种方法,我可以使用它来计算我的比赛机会 例如: 当玩家达到25级时,一个特定的东西解锁,一旦他们达到225级(这个技能的最大值),我需要它告诉我有25%的几率发生事件 我需要一个方法,这样我可以插入所需的级别、最高级别、当前级别和最大机会,并计算他们当前的技能,这需要是一个常量变量,但在级别25时是变量本身,然后在级别225时等于25% 我试着用Java 计算在某些上限之间获得目标值所需的增量,java,Java,我正在尝试创建一种方法,我可以使用它来计算我的比赛机会 例如: 当玩家达到25级时,一个特定的东西解锁,一旦他们达到225级(这个技能的最大值),我需要它告诉我有25%的几率发生事件 我需要一个方法,这样我可以插入所需的级别、最高级别、当前级别和最大机会,并计算他们当前的技能,这需要是一个常量变量,但在级别25时是变量本身,然后在级别225时等于25% 我试着用 maxChance * (currentLevel - requiredLevel) / maxLevel - requiredLev
maxChance * (currentLevel - requiredLevel) / maxLevel - requiredLevel
但这种方法在224级时有25%的机会,而在225级时则有25%的机会
我认为,由于变量是200个数字,它可以提供一个很好的用户友好的值,但它似乎停止在224
注:我使用百分比作为小数,所以25=25%。另外,我的解释可能看起来很复杂,因为我自己也很困惑,如果需要的话,我可以试着更好地解释。注意,你有201个(不仅仅是200个)数字:在25级,几率从0增加到X。然后在随后的200级中,每一级都会再次增加X。所以你需要
X * 201 = maxChance
或者,使用requiredLevel
和maxLevel
:
X * (1 + maxLevel - requiredLevel) = maxChance
因此
那么对于currentLevel
来说
chance = max(currentLevel + 1 - requiredLevel, 0) * maxChance / (1 + maxLevel - requiredLevel)
= max(currentLevel + 1 - 25, 0) * 0.25 / 201
你能举几个输入值和预期输出值的例子吗?我想当技能在25级解锁时,它等于X,然后每增加一级X,在225级X=0.25,这不是我想要的。你希望X=
0
,1
,24
,25
,100
,101
,224
,225
?@rebeliagamer.25和以下我不太明白我是怎么搞砸的,我选择了25-225,因为它们应该相隔200,提供一个友好的用户界面,但它是201?是的,我想是这样。第25级有第一个增量。然后有200个后续级别,因此有200个额外的增量。总共增加了201个。假设最大级别为30。当玩家达到25级时,你会得到一个增量,当他达到26、27、28、29、30级时,你会得到一个增量。这总共是6个,不是5个。
chance = max(currentLevel + 1 - requiredLevel, 0) * maxChance / (1 + maxLevel - requiredLevel)
= max(currentLevel + 1 - 25, 0) * 0.25 / 201