MC Toolkit / 计算器 / 马匹繁殖计算器 / 繁殖预测器 — 马匹繁殖计算器
繁殖预测器 — 马匹繁殖计算器
根据父母推算小马的生命值、跳跃高度和速度,采用游戏代码中的真实遗传公式。算法取父母数值的平均数再加偏移量,偏移量结合父母差异与该属性合法范围的 30%,随机数取三次平均更偏向中间值,超出范围会被反射回去。
Parents
Parent A
Parent B
合法范围:生命值 15–30 HP,跳跃 1.09–5.29 格,速度 4.74–14.23 格/秒。超出此范围的值在模拟前将被限制为最接近的合法值。两匹父母马都必须在游戏中喂食金苹果或金胡萝卜才能繁殖。
Foal Outlook
Per-Stat Prediction
How This Is Computed
Real Stat Ranges (Java Edition)
| Stat | Legal range | Displayed as |
|---|---|---|
| Max Health | 15 – 30 | HP (2 HP per heart) |
| Jump Strength | 1.09 – 5.29 | Blocks of jump height |
| Movement Speed | 4.74 – 14.23 | Blocks per second |
跳跃力度和移动速度以方块和方块每秒显示。在实际游戏中,它们以原始属性值的形式存储(跳跃力度 0.4–1.0,经过跳跃高度曲线换算 height = -0.1817v³ + 3.689v² + 2.128v - 0.343,实际方块高度下限约为 1.09 而非 0;速度 0.1125–0.3375 方块每刻,在 20 刻/秒下换算为方块/秒大约需乘以 ×42.16)。模拟基于原始属性值运行,与游戏一致,仅在显示时转换为方块/方块每秒,这也是大多数属性显示模组中数值的呈现方式。
The Offspring Formula
每匹幼崽的属性 — 生命值、跳跃力度和移动速度 — 都使用游戏中完全相同的公式形状独立计算 AbstractHorse.createOffspringAttribute 代码(这也适用于驴和骡子):
midpoint = (parentA + parentB) / 2range = statMax - statMinfor that stat’s legal rangespread = |parentA - parentB| + 0.3 × rangeroll = (random() + random() + random()) / 3 - 0.5— 三个独立的 0–1 随机数平均在一起,然后重新居中于零foalValue = midpoint + spread × roll- 如果结果超出合法范围,游戏会按超出量将其反射回来(
max - (foalValue - max)),本工具也是如此 — 这就是为什么两只满属性父母的后代平均速度约为 13.84 方块/秒,而永远不会达到 14.23 的上限。
平均三个随机数(步骤 4)而不是使用一个平坦的随机数,使得结果趋向于中点而不是均匀分布 — 大多数幼崽都相当接近其父母的平均值,偶尔会出现偏向任一边缘的异常值。
使用真实的原版后代属性公式(父母中点 + 基于差异的分布,通过 3 个平均随机值计算)作为客户端蒙特卡洛模拟运行 — 结果是来自多次模拟的概率估计,而不是单一的确定性答案,与真实游戏的工作方式相符。跳跃力度和速度以更直观的格/格每秒单位显示,而不是原始属性值。