Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算在某些上限之间获得目标值所需的增量_Java - Fatal编程技术网

Java 计算在某些上限之间获得目标值所需的增量

Java 计算在某些上限之间获得目标值所需的增量,java,Java,我正在尝试创建一种方法,我可以使用它来计算我的比赛机会 例如: 当玩家达到25级时,一个特定的东西解锁,一旦他们达到225级(这个技能的最大值),我需要它告诉我有25%的几率发生事件 我需要一个方法,这样我可以插入所需的级别、最高级别、当前级别和最大机会,并计算他们当前的技能,这需要是一个常量变量,但在级别25时是变量本身,然后在级别225时等于25% 我试着用 maxChance * (currentLevel - requiredLevel) / maxLevel - requiredLev

我正在尝试创建一种方法,我可以使用它来计算我的比赛机会

例如: 当玩家达到25级时,一个特定的东西解锁,一旦他们达到225级(这个技能的最大值),我需要它告诉我有25%的几率发生事件

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

我试着用

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