java - 计算在某些上限之间获得目标值所需的增量
问题描述
我正在尝试创建一种我可以使用的方法来计算我的游戏机会。
例如:当玩家达到 25 级时,某件事会解锁,一旦他们达到 225 级(该技能的最大值),我需要它说事件发生的几率为 25%。
我需要一种方法,这样我就可以插入所需的级别、最高级别、当前级别和最大机会并计算他们当前的技能,这需要是一个常量变量,但在 25 级时本身就是变量,然后在 225 级时等于 25%
我尝试使用
maxChance * (currentLevel - requiredLevel) / maxLevel - requiredLevel
但这种方法在 225 级时有 25% 的机会在 224 级。
我认为由于变量是 200 个数字,因此它可以提供一个很好的用户友好值,但它似乎停止在 224。
注意:我使用百分比作为小数,所以 0.25 = 25%。此外,我的解释可能看起来很复杂,因为我自己也很困惑,如果需要,我可以尝试更好地解释这一点。
解决方案
请注意,您有 201 个(不仅仅是 200 个)数字:在 25 级时,机会从 0 增加到 X。然后在随后的 200 个级别中,它再次增加 X。所以你需要
X * 201 = maxChance
或者,使用requiredLevel
and 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
推荐阅读
- python-3.x - 使用条件回填熊猫数据框列
- ruby-on-rails-5 - 访问 wicked_pdf 的 sidekiq 任务中的对象元素
- apple-watch - Apple Watch Series 4 并发症
- python-3.x - 尝试使用 python 在 pandas 中导入 .csv 文件。获取 Unicode 解码错误
- wordpress - 用于网站图标和徽标图像的 Wordpress REST API
- ruby-on-rails - 无法在 Rails 中保存新记录
- python - 卸载了所有 pip、Homebrew 和 Anaconda 软件包,但 Jupyter Notebook 仍然有效
- python - 尝试滚动侧窗并提取所有 HTML 元素
- layout - 如何更轻松地实现一个 Flutter 布局?
- c++ - C++ 模板类定义 - 不同类的模板化返回类型