随机数
请注意,部分内容可能尚未完成或存在错误。您也可以编辑页面帮助我们完善内容。
随机方式
骰子(Dice)
当系统需要“判断一个概率”时,通常使用一个特定的随机数生成器——一枚虚构的“百面骰子”来进行概率判定,其使用类似于《克苏鲁的呼唤》(Call of Cthulhu,简称COC)规则中的检定逻辑(本页面将沿用这一称呼):
随机生成一个 \(0.0\sim100.0\) 之间的浮点数(不包括 \(100.0\)),若 \(\text{该数值}\le\text{概率}\times100\),则视为通过(成功);反之则视为不通过(失败)。
- 明日方舟中的骰子仅以数值作为检定结果,不包含额外的“大成功”/“大失败”规则。
- 游戏中大部分以“\(X\%\)”标注的概率均为“进行一次骰检定,若成功则...”的逻辑,其中包括但不限于概率闪避(如贝洛内)、概率晕眩(如梅)、概率格挡(如星熊)、概率回费(如齐尔查克)等。
- ※例:贝洛内拥有 \(80\%\) 概率的闪避效果(也即检定成功的阈值为 \(80\))。当其受到合适的伤害时,他会进行一次骰子检定。
假设“骰子”的结果为 \(82.0\),\(82.0>80\),检定失败,继而导致闪避不触发;若结果为 \(20.33\),\(20.33\le80\),则检定成功,继而触发闪避效果,将此次伤害闪避(若可能)。 - ※但一些不标注为“\(X\%\)”的随机事件也可能使用到了骰子检定。
丢骰子属于一次取随机数行为。因此在代理作战中如果两个取骰子的事件顺序互换,其结果也会发生互换(详见#随机数轴)。
- 但概率为 \(0\) 时除外,此时将不会尝试投掷骰子,直接视为检定失败,因此不会占用随机数。
伪随机分布式骰子(DicePRD)
伪随机分布(Pseudo Random Distribution),简称 PRD,是一种确保一个事件的概率不会过度连续发生,也不会过度连续不发生的算法。
其原理简单来说就是“依照连续失败的次数,增加成功的概率”。
游戏中存在两种伪随机分布式的随机数生成器,且都被称为 DicePRD,因此此处以使用者为区别进行解释。
虽然名字也叫“骰子”,但伪随机分布式骰子的算法是复合的,其实际占用的随机数数量会根据算法的不同产生变化。
澄闪式DicePRD
可能是为了确保天赋不会频繁连续触发,同时也不至于始终触发,游戏内为澄闪的第一天赋自爆概率设计了一套伪随机分布式随机数,它具有以下参数:
- 初始概率:即首次丢“骰子”时的概率,单位为100%
- 累加概率:即每次失败时累加的概率,单位为100%
- 保底次数:即连续失败即将达到一定次数后,必定成功的保底机制
- 连续失败次数将记录在使用 DicePRD 的单位身上(每次失败时+1,成功时归零)
每次遇到调用此 DicePRD 的事件时,会执行下列计算:
- 若 \(\text{连续失败次数}+1\ge\text{保底次数}\),则跳过后续计算步骤,直接判定成功。
- 否则,计算 实际概率:\(\text{实际概率}=\text{初始概率}+\text{连续失败次数}\times\text{累加概率}\)
之后以实际概率,使用骰子进行一次检定。
※特别的,如果实际概率 \(\ge100\%\),也不会使用骰子检定,直接判定成功。
作为用例参考,在澄闪的例子中:
- 初始概率 及 累加概率 \(=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\)
- 计算 实际概率:\(\text{实际概率}=(\text{连续失败次数}+1)\times\text{基础概率}\)
之后以实际概率,使用骰子进行一次检定。
作为用例参考,在【叙拉古】盟约的例子中:
- 期望概率 \(=3\%\)(这使得基础概率 \(=0.00139\))
- 首次触发事件(【叙拉古】 \(6\) 人盟约激活情况下,【叙拉古】盟约/【调和】盟约干员造成普通伤害)时,有 \(0.139\%\) 概率通过检定(造成真实伤害与恐惧效果);检定未通过情况下,概率增加为 \(0.278\%\)。
- 后续每次检定失败都将再增加 \(0.139\%\) 概率,直至检定成功时,概率回落至初始的 \(0.139\%\)。
随机整数
除了骰子以外,游戏内还存在许多概率分布并不能直接以 \(100\%\) 整数分割,或概率权重不平均的随机数。
以艾雅法拉天赋的“部署后立即随机获得 \(7\sim15\) 点技力”为例:
- 其数据内的随机范围下限为 \(7\),上限为 \(16\)。
- 当每次调用随机整数时,系统会生成一个 \(\text{下限}\le x<\text{上限}\) 的随机小数,随后再对其向下取整。
因始终无法到达上限,因此游戏内显示的 \(15\)(\(16-1\))确实是随机整数逻辑能产生的最大整数。
取用随机整数同样属于一次取随机数行为。
随机选择
除了数字上的随机,明日方舟还存在不少事件上的随机。这里以阿天赋的“随机选择”举例:
- 待补充
取用随机整数同样属于一次取随机数行为。
随机数轴
轴与频道
待补充
不可控的“随机”
除了上述这些明确用到了随机逻辑的内容外,游戏内还存在不少实际上不可控的“随机”事件。
从程序的角度来看,它们并非随机,但从实际观测的角度来看,它们是无法预测、无法复现的。
这些不可控“随机”均不属于取随机数行为,因此均不受随机数轴影响。
同时碰撞
较为知名的一个“随机”行为。表现为不死的黑蛇释放的火球雨同时碰撞到多个单位(乌萨斯平民)时,哪个单位受伤对于玩家而言是随机的。
待补充
临时碰撞
在维什戴尔因其天赋而对于处理顺序具有的高度需求下,其被观测到的攻击命中顺序实际上完全无序且不可预测。
待补充
无序施加Buff
在死芒三技能的机制实现中,使用到了 CreateBuffInRange 方法,并让第一个处理的单位“消耗”,用于实现“消耗一个悲叹的仆役”
但此方法的处理顺序对于玩家而言也是不可预测的。
待补充