这个页面或章节尚在编辑中。
请注意,部分内容可能尚未完成或存在错误。您也可以编辑页面帮助我们完善内容。

随机方式

骰子(Dice)

当系统需要“判断一个概率”时,通常使用一个特定的随机数生成器——一枚虚构的“百面骰子”来进行概率判定,其使用类似于《克苏鲁的呼唤》(Call of Cthulhu,简称COC)规则中的检定逻辑(本页面将沿用这一称呼):

随机生成一个0.0~100.0之间的浮点数(不包括100.0),若 该数值 < 概率×100,则视为通过(成功);反之则视为不通过(失败)。

  • 明日方舟中的骰子仅以数值作为检定结果,不包含额外的“大成功”/“大失败”规则。
  • 游戏中大部分以“X%”标注的概率均为“进行一次骰检定,若成功则...”的逻辑,其中包括但不限于概率闪避(如贝洛内)、概率晕眩(如)、概率格挡(如星熊)、概率回费(如齐尔查克)等。
※例:贝洛内拥有80%概率的闪避效果(也即检定成功的阈值为80)。当其受到合适的伤害时,他会进行一次骰子检定。
假设“骰子”的结果为82.0,82.0 > 80,检定失败,继而导致闪避不触发;若结果为20.3,20.33 < 80,则检定成功,继而触发闪避效果,将此次伤害闪避(若可能)。
※部分不标注“X%”的事件也存在使用骰子检定的情况。

丢骰子属于一次取随机数行为。因此在代理作战中如果两个取骰子的事件顺序互换,其结果也会发生互换(详见#随机数轴)。

  • 概率为0时为特殊情况:此时将不会尝试投掷骰子,直接视为检定失败,因此不会占用随机数。

伪随机分布式骰子(DicePRD)

伪随机分布(Pseudo Random Distribution),简称 PRD,是一种确保一个事件的概率不会过度连续发生,也不会过度连续不发生的算法。

其原理简单来说就是“依照连续失败的次数,增加成功的概率”。

游戏中存在两种伪随机分布式的随机数生成器,且都被称为 DicePRD,因此此处以使用者为区别进行解释。

虽然名字也叫“骰子”,但伪随机分布式骰子的算法是复合的,其实际占用的随机数数量会根据算法的不同产生变化。

澄闪式DicePRD

可能是为了确保天赋不会频繁连续触发,同时也不至于始终触发,游戏内为澄闪的第一天赋自爆概率设计了一套伪随机分布式随机数,它具有以下参数:

  • 初始概率:即首次丢“骰子”时的概率,单位为100%
  • 累加概率:即每次失败时累加的概率,单位为100%
  • 保底次数:即连续失败即将达到一定次数后,必定成功的保底机制
  • 连续失败次数将记录在使用 DicePRD 的单位身上(每次失败时+1,成功时归零)

每次遇到调用此 DicePRD 的事件时,会执行下列计算:

  • 若 连续失败次数+1 ≥ 保底次数,则跳过后续计算步骤,直接判定成功。
  • 否则,计算 实际概率:\(\text{实际概率}=\text{初始概率}+\text{连续失败次数}\times\text{累加概率}\)
    之后以实际概率,使用骰子进行一次检定
    ※特别的,如果 实际概率 ≥ 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
  • 计算 实际概率:\(\text{实际概率}=(\text{连续失败次数}+1)\times\text{基础概率}\)
    之后以实际概率,使用骰子进行一次检定

作为用例参考,在【叙拉古】盟约的例子中:

  • 期望概率 = 3%(这使得基础概率 = 0.00139)
  • 首次触发事件(【叙拉古】6人盟约激活情况下,【叙拉古】盟约/【调和】盟约干员造成普通伤害)时,有0.139%概率通过检定(造成真实伤害与恐惧效果);检定未通过情况下,概率增加为0.278%。
  • 后续每次检定失败都将再增加0.139%概率,直至检定成功时,概率回落至初始的0.139%。

随机整数

除了骰子以外,游戏内还存在许多概率分布并不能直接以100整数分割,或概率权重不平均的随机数。

艾雅法拉天赋的“部署后立即随机获得7~15点技力”为例:

  • 其数据内的随机范围下限为7,上限为16。
  • 当每次调用随机整数时,系统会生成一个 下限 ≤ x < 上限 的随机小数,随后再对其向下取整。
    因始终无法到达上限,因此游戏内显示的15(也即16-1)确实是随机整数逻辑能产生的最大整数。

取用随机整数同样属于一次取随机数行为。

权重随机(随机选择)

除了数字上的随机,明日方舟还存在不少事件上的随机,常见的有处理集成战略是否出怪、天赋产生多个效果中的随机一个、敌人从随机兔子洞出口钻出等。这被称为权重随机,或者更大众化一点,随机选择
进行权重随机时,会先求和所有事件配置的权重得到总权重,随后生成一个大于等于0、小于总权重的随机数X
随后会从事件列表中依次让X减去该事件的权重值,直至X首次小于/等于0时,选用该事件作为本次权重随机的结果(类似于转轮盘的逻辑)
因此进行权重随机时,必定会发生一个事件(哪怕那个事件为“什么也不发生”),其中每个事件的发生概率等同于 其权重 / 总权重;如果每个事件的权重均相等,那么一次权重随机就相当于“在这几个选项中随机选择一项”。

这里以天赋与特米米的二技能的举例:

  • 未精英化的阿的天赋有四个效果(简述):回血、加倍率、停顿、眩晕
    • 四个选项均为1权重,总权重为4,因此单次随机中每个效果各拥有25%的概率触发
  • 特米米专精三级的二技能有三个效果:眩晕、加倍率、群体伤害
    • 三个选项均为1权重,总权重为3,因此单次随机中每个效果各拥有约33.33%的概率触发

进行一次权重随机同样属于一次取随机数行为。

  • 特别的,如果权重随机的项数只有一个(通常是事件列表不确定的情况),那不论其权重如何(哪怕其是0权重)也会直接采用该事件,且此时不再属于一次取随机数的行为。

列表洗切

权重随机补足了选项数量不确定的“多选一”处理,而在权重均相等的情况下,需要选择多个项时,会使用列表洗切(shuffle)。列表随机是UnityEngine中自带的逻辑,其本质上是将已有的列表按照特定

这里以敌方单位霜星的“冻结”技能举例:

  • 霜星先将周围所有“未部署封印的地面的可部署地块”加入候选列表,将列表进行洗切,随后从洗切后的列表中选择两项作为技能目标地块。
    • 该技能在代理中被设为特殊对待,代理中会出现非随机性的选择。

待补充

随机数轴

轴与频道

待补充

不可控的“随机”

除了上述这些明确用到了随机逻辑的内容外,游戏内还存在不少实际上不可控的“随机”事件。

从程序的角度来看,它们并非随机,但从实际观测的角度来看,它们是无法预测、无法复现的。

这些不可控“随机”均不属于取随机数行为,因此均不受随机数轴影响。

同时碰撞

较为知名的一个“随机”行为。表现为不死的黑蛇释放的火球雨同时碰撞到多个单位(乌萨斯平民)时,哪个单位受伤对于玩家而言是随机的。

待补充

临时碰撞

维什戴尔因其天赋而对于处理顺序具有的高度需求下,其被观测到的攻击命中顺序实际上完全无序且不可预测。

待补充

无序施加Buff

死芒三技能的机制实现中,使用到了 CreateBuffInRange 方法,并让第一个处理的单位“消耗”,用于实现“消耗一个悲叹的仆役”

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

待补充