随机数

来自PRTS
跳转到导航 跳转到搜索
这个页面或章节尚在编辑中。
请注意,部分内容可能尚未完成或存在错误。您也可以编辑页面帮助我们完善内容。
这个页面或章节尚在编辑中。
请注意,部分内容可能尚未完成或存在错误。您也可以编辑页面帮助我们完善内容。

随机方式

骰子(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 方法,并让第一个处理的单位“消耗”,用于实现“消耗一个悲叹的仆役”

但此方法的处理顺序对于玩家而言也是不可预测的。

待补充