随机数
请注意,部分内容可能尚未完成或存在错误。您也可以编辑页面帮助我们完善内容。
请注意,部分内容可能尚未完成或存在错误。您也可以编辑页面帮助我们完善内容。
随机方式
骰子(Dice)
当系统需要“判断一个概率”时,通常使用一个特定的随机数生成器——一枚虚构的“百面骰子”来进行概率判定,其使用类似于《克苏鲁的呼唤》(Call of Cthulhu,简称COC)规则中的检定逻辑(本页面将沿用这一称呼):
随机生成一个0.0~100.0之间的浮点数(不包括100.0),若 该数值 ≤ 概率 * 100 ,则视为通过(成功);反之则视为不通过(失败)。
- 明日方舟中的骰子仅以数值作为检定结果,不包含额外的“大成功”/“大失败”规则。
- 游戏中大部分以“X%”标注的概率均为“进行一次骰检定,若成功则...”的逻辑,其中包括但不限于概率闪避(如贝洛内)、概率晕眩(如梅)、概率格挡(如星熊)、概率回费(如齐尔查克)等。
- ※例:贝洛内拥有80%概率的闪避效果(也即检定成功的阈值为80)。当其受到合适的伤害时,他会进行一次骰子检定。
假设“骰子”的结果为82.0,82.0>80,检定失败,继而导致闪避不触发;若结果为20.33,20.33≤80,则检定成功,继而触发闪避效果,将此次伤害闪避(若可能)。 - ※但一些不标注为“X%”的随机事件也可能使用到了骰子检定。
丢骰子属于一次取随机数行为。因此在代理作战中如果两个取骰子的事件顺序互换,其结果也会发生互换(详见#随机数轴)。
- 但概率为0时除外,此时将不会尝试投掷骰子,直接视为检定失败,因此不会占用随机数。
伪随机分布式骰子(DicePRD)
伪随机分布(Pseudo Random Distribution),简称PRD,是一种确保一个事件的概率不会过度连续发生,也不会过度连续不发生的算法。
其原理简单来说就是“依照连续失败的次数,增加成功的概率”。
游戏中存在两种伪随机分布式的随机数生成器,且都被称为DicePRD,因此此处以使用者为区别进行解释。
虽然名字也叫“骰子”,但伪随机分布式骰子的算法是复合的,其实际占用的随机数数量会根据算法的不同产生变化。
澄闪式DicePRD
可能是为了确保天赋不会频繁连续触发,同时也不至于始终触发,游戏内为澄闪的第一天赋自爆概率设计了一套伪随机分布式随机数,它具有以下参数:
- 初始概率:即首次丢“骰子”时的概率,单位为100%
- 累加概率:即每次失败时累加的概率,单位为100%
- 保底次数:即连续失败即将达到一定次数后,必定成功的保底机制
- 连续失败次数将记录在使用DicePRD的单位身上(每次失败时+1,成功时归零)
每次遇到调用此DicePRD的事件时,会执行下列计算:
- 若 (连续失败次数+1) ≥ 保底次数,则跳过后续计算步骤,直接判定成功。
- 否则,计算 实际概率 = 初始概率 + 连续失败次数 * 累加概率
之后以实际概率,使用骰子进行一次检定。
※特别的,如果实际概率≥100%,也不会使用骰子检定,直接判定成功。
作为用例参考,在澄闪的例子中:
- 初始概率 及 累加概率 = 0.015
- 保底次数 = 40
- 使用DicePRD的单位 = 自身
- 调用事件 = 浮游单元攻击时
卫戍协议式DicePRD
在卫戍协议:盟约 下半期中,可能是为了确保一些概率不至于低到一整局无法触发,游戏内为【叙拉古】盟约的再部署概率使用了一套新的伪随机分布式骰子。该骰子也被用于新版的【不屈】盟约。
它具有以下参数:
- 期望概率:即DicePRD最终希望给玩家带来的事件发生的宏观综合概率
- 基础概率:使用乘以100随后就近取整后的期望概率进行表格查询,使用表格中对应的值作为计算用的基础概率
- 连续失败次数将记录在全局黑板上,在同一场战斗内的不同干员、不同玩家间互通(每次失败时+1,成功时归零)
每次遇到调用此DicePRD的事件时,会执行下列计算:
- 根据预设对照表,以期望概率为基准获取要使用的基础概率。
期望概率与基础概率对照表 期望概率(就近取整至1%) 对应的基础概率 0% 0.0 1% 0.00016 2% 0.00062 3% 0.00139 4% 0.00245 5% 0.0038 6% 0.00544 7% 0.00736 8% 0.00955 9% 0.01202 10% 0.01475 11% 0.01774 12% 0.02098 13% 0.02448 14% 0.02823 15% 0.03222 16% 0.03645 17% 0.04092 18% 0.04562 19% 0.05055 20% 0.0557 21% 0.06108 22% 0.06668 23% 0.07249 24% 0.07851 25% 0.08474 26% 0.09118 27% 0.09783 28% 0.10467 29% 0.11171 30% 0.11895 31% 0.12638 32% 0.134 33% 0.14181 34% 0.14981 35% 0.15798 36% 0.16633 37% 0.17491 38% 0.18362 39% 0.19249 40% 0.20155 41% 0.21092 42% 0.22037 43% 0.2299 44% 0.23954 45% 0.24931 46% 0.25987 47% 0.27045 48% 0.28101 49% 0.29155 50% 0.3021 51% 0.31268 52% 0.32329 53% 0.33412 54% 0.34737 55% 0.3604 56% 0.37322 57% 0.38584 58% 0.39828 59% 0.41054 60% 0.42265 61% 0.4346 62% 0.44642 63% 0.4581 64% 0.46967 65% 0.48113 66% 0.49248 67% 0.50746 68% 0.52941 69% 0.55072 70% 0.57143 71% 0.59155 72% 0.61111 73% 0.63014 74% 0.64865 75% 0.66667 76% 0.68421 77% 0.7013 78% 0.71795 79% 0.73418 80% 0.75 81% 0.76543 82% 0.78049 83% 0.79518 84% 0.80952 85% 0.82353 86% 0.83721 87% 0.85058 88% 0.86364 89% 0.8764 90% 0.88889 91% 0.9011 92% 0.91304 93% 0.92473 94% 0.93617 95% 0.94737 96% 0.95833 97% 0.96907 98% 0.97959 99% 0.9899 100% 1.0
- 计算 实际概率 = ( 连续失败次数 + 1 ) * 基础概率
之后以实际概率,使用骰子进行一次检定。
作为用例参考,在【叙拉古】盟约的例子中:
- 期望概率 = 3%(这使得基础概率 = 0.00139)
- 首次触发事件(【叙拉古】6人盟约激活情况下,【叙拉古】盟约/【调和】盟约干员造成普通伤害)时,有0.139%概率通过检定(造成真实伤害与恐惧效果);检定未通过情况下,概率增加为0.278%。
- 后续每次检定失败都将再增加0.139%概率,直至检定成功时,概率回落至初始的0.139%。
随机整数
除了骰子以外,游戏内还存在许多概率分布并不能直接以100%整数分割,或概率权重不平均的随机数。
以艾雅法拉天赋的“部署后立即随机获得7~15点技力”为例:
- 其数据内的随机范围下限为7,上限为16。
- 当每次调用随机整数时,系统会生成一个(下限≤x<上限)的随机小数,随后再对其向下取整。
因始终无法到达上限,因此游戏内显示的15(16-1)确实是随机整数逻辑能产生的最大整数。
取用随机整数同样属于一次取随机数行为。
随机选择
除了数字上的随机,明日方舟还存在不少事件上的随机。这里以阿天赋的“随机选择”举例:
- 待补充
取用随机整数同样属于一次取随机数行为。
随机数轴
轴与频道
待补充
不可控的“随机”
除了上述这些明确用到了随机逻辑的内容外,游戏内还存在不少实际上不可控的“随机”事件。
从程序的角度来看,它们并非随机,但从实际观测的角度来看,它们是无法预测、无法复现的。
这些不可控“随机”均不属于取随机数行为,因此均不受随机数轴影响。
同时碰撞
较为知名的一个“随机”行为。表现为不死的黑蛇释放的火球雨同时碰撞到多个单位(乌萨斯平民)时,哪个单位受伤对于玩家而言是随机的。
待补充
临时碰撞
在维什戴尔因其天赋而对于处理顺序具有的高度需求下,其被观测到的攻击命中顺序实际上完全无序且不可预测。
待补充
无序施加Buff
在死芒三技能的机制实现中,使用到了CreateBuffInRange方法,并让第一个处理的单位“消耗”,用于实现“消耗一个悲叹的仆役”
但此方法的处理顺序对于玩家而言也是不可预测的。
待补充