“随机分布”的版本间的差异

来自Dota 2 Wiki
跳转至: 导航搜索
(7.28)
(更新翻译内容至与EN当前一致)
 
第1行: 第1行:
{{trans|o}}
 
 
竞技游戏通常是拒绝'''随机性'''的,因为他干扰了实际水平的考量。但是,应对突发情况也是能力的一种表现。因此,在DotA 2中,有很多随机事件,这些随机事件降低了游戏的可预测性,增加了变数。为了限制这种随机性的影响,伪随机分布应运而生,取代了真随机分布。
 
竞技游戏通常是拒绝'''随机性'''的,因为他干扰了实际水平的考量。但是,应对突发情况也是能力的一种表现。因此,在DotA 2中,有很多随机事件,这些随机事件降低了游戏的可预测性,增加了变数。为了限制这种随机性的影响,伪随机分布应运而生,取代了真随机分布。
   
 
== 定义 ==
 
== 定义 ==
 
[[File:AttacksUntilNextProc25.jpg|thumb|PRD下每次攻击的触发几率。]]
 
[[File:AttacksUntilNextProc25.jpg|thumb|PRD下每次攻击的触发几率。]]
  +
[[File:PRD proc chance.png|thumb|PRD下的触发概率]]
'''均匀'''或'''真随机分布'''描述的是那些不会根据之前的结果而有所调整的随机事件的可能性。这意味着每一次"随机"都是独立的。
 
   
  +
''均匀''或''真随机分布''描述的是那些不会根据之前的结果而有所调整的随机事件的可能性。这意味着每一次"随机"都是独立的。
'''伪随机分布'''(简称PRD)在DotA中用来表示关于一些有一定几率的装备和技能的统计机制。在这种实现中,事件的几率会在每一次没有发生时增加,但作为补偿,第一次的几率较低。这使得效果的触发结果更加一致。
 
   
  +
''伪随机分布''(pseudo-random distribution,简称PRD)在DotA中用来表示关于一些有一定几率的装备和技能的统计机制<ref>https://en.wikipedia.org/wiki/Pseudo-random_number_sampling</ref>。在这种实现中,事件的几率会在每一次没有发生时增加,但作为补偿,第一次的几率较低。这使得效果的触发结果更加一致。
效果发生的几率(简称proc)在第N次成功触发的几率为''P(N) = C × N'',对于每一个没有成功触发的实例来说,PRD系统会通过一个常数C来增加下一次效果触发的几率,这个常数会作为初始几率,比效果说明中的几率要低,并且是不可见的,一旦效果触发,这个计数器就会重置。
 
   
  +
效果在上次成功触发后''第N次''测试中发生的几率(简称proc)成功触发的几率为<math>P(N) = C \cdot N</math>。对于每一个没有成功触发的实例来说,PRD系统为下一次效果触发的几率增加一个常数''C''。该常数也会作为初始几率,比效果说明中的几率要低,并且是不可见的。一旦效果触发,这个计数器就会重置。
技术上,如果以''X_i''表示第''i''次事件发生,''~X_i''表示事件不发生,伪随机分布使用''P(X_N | ~X_i for all i < N) = C × N''。同样地,当''C × N ≥1''时,如果事件一直没有发生,那么第''N''次(''N ≥ 1/C'')事件必然发生。因此概率分布为''P(X_k) = (1-C)(1-2C)...(1-(k-1)C)KC = k!C Π_{i=1}^{k-1} (1/i - C)''。
 
   
  +
技术上,如果以<math>X_i</math>表示第<math>i</math>次事件发生,<math>\neg X_i</math>表示事件不发生,伪随机分布使用<math>P(X_N | \neg X_i</math> 对所有<math>i < N) = C \cdot N</math>。同样地,当<math>C \cdot N \geq 1</math>时,如果事件一直没有发生,那么在满足<math>N \geq \frac{1}{C}</math>中的最小<math>N</math>次判定时,该事件必然发生。(''N ≥ 1/C'')事件必然发生。因此概率分布为<math>P(X_k) = (1-C) \, (1 - 2 \, C) \, ... \, (1 - (k-1) \, C) \, k \, C = k! \, C \, \prod_{i=1}^{k-1}(\frac{1}{i} - C)</math>。
=== 比如 ===
 
   
  +
=== 例子 ===
: 近战英雄上,{{I|碎颅锤}}的[[重击]]有25%几率对目标造成[[眩晕]],那么第一次攻击,他实际上只有大约8.5%几率触发重击,随后每一次失败的触发会增加大约8.5%触发几率,于是到了第二次攻击,几率就变成大约17%,第三次大约25.5%,以此类推,在一次重击触发后,下一次攻击的触发几率又会重置到大约8.5%,那么经过一段时间之后,这些深海重击几率的平均值就会接近25%。
 
   
  +
: 对近战英雄,{{I|碎颅锤}}的[[重击]]有25%几率对目标造成[[眩晕]]。那么在第一次攻击时,实际上只有大约8.5%几率触发重击。随后每一次失败的触发会增加大约8.5%触发几率。于是到了第二次攻击,几率就变成大约17%,第三次大约25.5%,以此类推。在一次重击触发后,下一次攻击的触发几率又会重置到大约8.5%。那么经过一段时间之后,这些重击几率的平均值就会接近25%。
基于PRD的效果需要多次触发或多次不触发是非常罕见的,这使得游戏的运气成分大大降低,在Dota 2中一个有那么多带几率的技能的世界中增加了一致性,在游戏中,PRD很难被利用。在早期的游戏社区中,曾经有过通过在大战前攻击小兵但不触发暴击,从而提升在对英雄攻击时第一击产生暴击的概率,用于在对抗中取得先手优势,这种思路被俗称为“暖手”,但实际上由于暴击不可控,暖手成功率较低,因此实际这种战术意义有限,也并未流行。要注意一点的是,如果这个实例根本就不可能触发效果,那么触发几率''不会''增加,也就是说,一个英雄攻击[[建筑]]不会增加他下一次攻击触发的[[致命一击]]几率,因为致命一击对建筑无效。触发几率也不会在技能进入冷却时(比如重击)重置/增加。
 
  +
\,
  +
基于PRD的效果连续多次触发或多次不触发是非常罕见的。这使得游戏的运气成分大大降低,在Dota 2中一个有那么多带几率的技能的世界中增加了一致性。在游戏中,PRD很难被利用。通过对小兵攻击数次但不触发重击或暴击效果——来提高下一次触发的几率,这在理论上可能,而实践中则近乎不可能。要注意一点的是,如果这个实例根本就不可能触发效果,那么触发几率''不会''增加,也就是说,一个英雄攻击[[建筑]]不会增加他下一次攻击触发的[[致命一击]]几率,因为致命一击对建筑无效。触发几率也不会在技能进入冷却时(比如重击)重置/增加。
   
  +
=== C值 ===
在以下表格中,P(T)表示不会被使用的理论几率,P(A)表示平均几率,C是PRD常数,最大N值是根据C × N会超过1的性质得到的最大N值(也就是一定会触发的次数),平均N值是N的期望值,也就是N和概率的乘积之和,SD是N的标准差,一个用来衡量数据的离散程度,使用的是大家熟知的公式,标准差越低,几率就越一致,为了作对比,SDt表示真随机分布中N的标准差,使用N从1到264的简单公式,显然,他们都比PRD要高,因此他们的一致性就没那么高了。
 
  +
C作为通常几率的函数,其数值如下<ref>https://gaming.stackexchange.com/questions/161430/calculating-the-constant-c-in-dota-2-pseudo-random-distribution</ref>:
 
  +
{| class="wikitable"
=== 百分比 ===
 
  +
!C
{| class = "wikitable" width = "100%"
 
  +
!通常几率
! class = "header" | P(T)
 
  +
!C近似值
! class = "header" | P(A)
 
! class = "header" | C
 
! class = "header" | 最大N值
 
! class = "header" | 可能性最高的N值
 
! class = "header" | 平均N值
 
! class = "header" | {{tooltip|SD|标准差}}
 
! class = "header" | {{tooltip|SDt|真随机的标准差}}
 
 
|-
 
|-
  +
|0.003801658303553139101756466
| 5%
 
| 5.0%
+
|5%
| 0.00380
+
|0.38%
| 264
 
| 16
 
| 20
 
| 10.30
 
| 19.53
 
 
|-
 
|-
  +
|0.014745844781072675877050816
| 10%
 
| 10.0%
+
|10%
| 0.01475
+
|1.5%
| 68
 
| 8
 
| 10
 
| 5.06
 
| 9.50
 
 
|-
 
|-
  +
|0.032220914373087674975117359
| 15%
 
| 15.0%
+
|15%
| 0.03221
+
|3.2%
| 32
 
| 6
 
| 6.67
 
| 3.31
 
| 6.16
 
 
|-
 
|-
  +
|0.055704042949781851858398652
| 20%
 
| 20.0%
+
|20%
| 0.05570
+
|5.6%
| 18
 
| 4
 
| 5
 
| 2.43
 
| 4.48
 
 
|-
 
|-
  +
|0.084744091852316990275274806
| 25%
 
| 24.9%
+
|25%
| 0.08475
+
|8.5%
| 12
 
| 3
 
| 4.02
 
| 1.90
 
| 3.49
 
 
|-
 
|-
  +
|0.118949192725403987583755553
| 30%
 
| 29.9%
+
|30%
  +
|12%
| 0.11895
 
| 9
 
| 3
 
| 3.34
 
| 1.54
 
| 2.81
 
 
|-
 
|-
  +
|0.157983098125747077557540462
| 35%
 
| 33.6%
+
|35%
  +
|16%
| 0.14628
 
| 7
 
| 3
 
| 2.98
 
| 1.35
 
| 2.43
 
 
|-
 
|-
  +
|0.201547413607754017070679639
| 40%
 
| 37.7%
+
|40%
  +
|20%
| 0.18128
 
| 6
 
| 2
 
| 2.65
 
| 1.17
 
| 2.10
 
 
|-
 
|-
  +
|0.249306998440163189714677100
| 45%
 
| 41.8%
+
|45%
  +
|25%
| 0.21867
 
| 5
 
| 2
 
| 2.39
 
| 1.03
 
| 1.83
 
 
|-
 
|-
  +
|0.302103025348741965169160432
| 50%
 
| 45.7%
+
|50%
  +
|30%
| 0.25701
 
| 4
 
| 2
 
| 2.19
 
| 0.91
 
| 1.62
 
 
|-
 
|-
  +
|0.360397850933168697104686803
| 55%
 
| 49.3%
+
|55%
  +
|36%
| 0.29509
 
| 4
 
| 2
 
| 2.03
 
| 0.83
 
| 1.45
 
 
|-
 
|-
  +
|0.422649730810374235490851220
| 60%
 
| 53.0%
+
|60%
  +
|42%
| 0.33324
 
| 4
 
| 2
 
| 1.89
 
| 0.74
 
| 1.30
 
 
|-
 
|-
  +
|0.481125478337229174401911323
| 65%
 
| 56.6%
+
|65%
  +
|48%
| 0.38109
 
| 3
 
| 2
 
| 1.77
 
| 0.69
 
| 1.17
 
 
|-
 
|-
  +
|0.571428571428571428571428572
| 70%
 
| 60.1%
+
|70%
  +
|57%
| 0.42448
 
| 3
 
| 2
 
| 1.66
 
| 0.63
 
| 1.05
 
 
|-
 
|-
  +
|0.666666666666666666666666667
| 75%
 
| 63.2%
+
|75%
  +
|67%
| 0.46134
 
| 3
 
| 2
 
| 1.58
 
| 0.57
 
| 0.96
 
 
|-
 
|-
  +
|0.750000000000000000000000000
| 80%
 
| 66.7%
+
|80%
  +
|75%
| 0.50276
 
| 2
+
|-
  +
|0.823529411764705882352941177
| 1
 
  +
|85%
| 1.50
 
  +
|82%
| 0.50
 
  +
|-
| 0.87
 
  +
|0.888888888888888888888888889
  +
|90%
  +
|89%
  +
|-
  +
|0.947368421052631578947368421
  +
|95%
  +
|95%
 
|}
 
|}
   
第269行: 第196行:
 
| trait2 = 搜索范围
 
| trait2 = 搜索范围
 
| value2 = 375
 
| value2 = 375
  +
| notes = 每次击中敌人时,对范围内的两个随机敌人发出弹道
 
}}
 
}}
 
{{SkillListRich
 
{{SkillListRich
第796行: 第724行:
 
}}
 
}}
 
{{SkillListTail}}
 
{{SkillListTail}}
  +
  +
== 遗留数据 ==
  +
以下表格为从原版WarCraft3 DotA网站上引用的遗留数据。''P(T)''表示理论几率,''P(A)''表示实际几率。''C''是PRD常数。''N最大值''是根据<math>C \cdot N</math>会超过1的性质得到的最小数字(也就是一定会触发的次数)。''N平均值''是''N''的期望值:也就是N×概率的结果之和。''SD''是''N''的标准差(standard deviation),一个用来衡量数据的离散程度的值,使用大家熟知的公式得出。标准差越低,几率就越一致。为了作对比,''SDt''表示真随机分布中''N''的标准差,使用''N = 1''到''N = 264''的样本公式得出。''SDt''(真随机分布)都比''SD''(伪随机分布)要高,因此真随机分布的一致性就没那么高了。
  +
{| class="wikitable" width="100%"
  +
! class = "header" | P(T)
  +
! class = "header" | P(A)
  +
! class = "header" | C
  +
! class = "header" | N最大值
  +
! class = "header" | N可能性最高的值
  +
! class = "header" | N平均值
  +
! class = "header" | {{tooltip|SD|标准差}}
  +
! class = "header" | {{tooltip|SDt|真随机的标准差}}
  +
|-
  +
| 5%
  +
| 5.0%
  +
| 0.00380
  +
| 264
  +
| 16
  +
| 20.00
  +
| 10.30
  +
| 19.53
  +
|-
  +
| 10%
  +
| 10.0%
  +
| 0.01475
  +
| 68
  +
| 8
  +
| 10.00
  +
| 5.06
  +
| 9.50
  +
|-
  +
| 15%
  +
| 15.0%
  +
| 0.03221
  +
| 32
  +
| 6
  +
| 6.67
  +
| 3.31
  +
| 6.16
  +
|-
  +
| 20%
  +
| 20.0%
  +
| 0.05570
  +
| 18
  +
| 4
  +
| 5.00
  +
| 2.43
  +
| 4.48
  +
|-
  +
| 25%
  +
| 24.9%
  +
| 0.08475
  +
| 12
  +
| 3
  +
| 4.02
  +
| 1.90
  +
| 3.49
  +
|-
  +
| 30%
  +
| 29.9%
  +
| 0.11895
  +
| 9
  +
| 3
  +
| 3.34
  +
| 1.54
  +
| 2.81
  +
|-
  +
| 35%
  +
| 33.6%
  +
| 0.14628
  +
| 7
  +
| 3
  +
| 2.98
  +
| 1.35
  +
| 2.43
  +
|-
  +
| 40%
  +
| 37.7%
  +
| 0.18128
  +
| 6
  +
| 2
  +
| 2.65
  +
| 1.17
  +
| 2.10
  +
|-
  +
| 45%
  +
| 41.8%
  +
| 0.21867
  +
| 5
  +
| 2
  +
| 2.39
  +
| 1.03
  +
| 1.83
  +
|-
  +
| 50%
  +
| 45.7%
  +
| 0.25701
  +
| 4
  +
| 2
  +
| 2.19
  +
| 0.91
  +
| 1.62
  +
|-
  +
| 55%
  +
| 49.3%
  +
| 0.29509
  +
| 4
  +
| 2
  +
| 2.03
  +
| 0.83
  +
| 1.45
  +
|-
  +
| 60%
  +
| 53.0%
  +
| 0.33324
  +
| 4
  +
| 2
  +
| 1.89
  +
| 0.74
  +
| 1.30
  +
|-
  +
| 65%
  +
| 56.6%
  +
| 0.38109
  +
| 3
  +
| 2
  +
| 1.77
  +
| 0.69
  +
| 1.17
  +
|-
  +
| 70%
  +
| 60.1%
  +
| 0.42448
  +
| 3
  +
| 2
  +
| 1.66
  +
| 0.63
  +
| 1.05
  +
|-
  +
| 75%
  +
| 63.2%
  +
| 0.46134
  +
| 3
  +
| 2
  +
| 1.58
  +
| 0.57
  +
| 0.96
  +
|-
  +
| 80%
  +
| 66.7%
  +
| 0.50276
  +
| 2
  +
| 1
  +
| 1.50
  +
| 0.50
  +
| 0.87
  +
|}
   
 
== 版本历史 ==
 
== 版本历史 ==
第833行: 第918行:
   
 
{{MechanicsNav}}
 
{{MechanicsNav}}
 
 
[[Category:机制]]
 
[[Category:机制]]
 
   
 
[[en:Random distribution]]
 
[[en:Random distribution]]

2021年6月9日 (三) 07:22的最新版本

竞技游戏通常是拒绝随机性的,因为他干扰了实际水平的考量。但是,应对突发情况也是能力的一种表现。因此,在DotA 2中,有很多随机事件,这些随机事件降低了游戏的可预测性,增加了变数。为了限制这种随机性的影响,伪随机分布应运而生,取代了真随机分布。

定义[编辑]

PRD下每次攻击的触发几率。
PRD下的触发概率

均匀真随机分布描述的是那些不会根据之前的结果而有所调整的随机事件的可能性。这意味着每一次"随机"都是独立的。

伪随机分布(pseudo-random distribution,简称PRD)在DotA中用来表示关于一些有一定几率的装备和技能的统计机制[1]。在这种实现中,事件的几率会在每一次没有发生时增加,但作为补偿,第一次的几率较低。这使得效果的触发结果更加一致。

效果在上次成功触发后第N次测试中发生的几率(简称proc)成功触发的几率为。对于每一个没有成功触发的实例来说,PRD系统为下一次效果触发的几率增加一个常数C。该常数也会作为初始几率,比效果说明中的几率要低,并且是不可见的。一旦效果触发,这个计数器就会重置。

技术上,如果以表示第次事件发生,表示事件不发生,伪随机分布使用 对所有。同样地,当时,如果事件一直没有发生,那么在满足中的最小次判定时,该事件必然发生。(N ≥ 1/C)事件必然发生。因此概率分布为

例子[编辑]

对近战英雄,Skull Basher icon.png 碎颅锤重击有25%几率对目标造成眩晕。那么在第一次攻击时,实际上只有大约8.5%几率触发重击。随后每一次失败的触发会增加大约8.5%触发几率。于是到了第二次攻击,几率就变成大约17%,第三次大约25.5%,以此类推。在一次重击触发后,下一次攻击的触发几率又会重置到大约8.5%。那么经过一段时间之后,这些重击几率的平均值就会接近25%。

\, 基于PRD的效果连续多次触发或多次不触发是非常罕见的。这使得游戏的运气成分大大降低,在Dota 2中一个有那么多带几率的技能的世界中增加了一致性。在游戏中,PRD很难被利用。通过对小兵攻击数次但不触发重击或暴击效果——来提高下一次触发的几率,这在理论上可能,而实践中则近乎不可能。要注意一点的是,如果这个实例根本就不可能触发效果,那么触发几率不会增加,也就是说,一个英雄攻击建筑不会增加他下一次攻击触发的致命一击几率,因为致命一击对建筑无效。触发几率也不会在技能进入冷却时(比如重击)重置/增加。

C值[编辑]

C作为通常几率的函数,其数值如下[2]:

C 通常几率 C近似值
0.003801658303553139101756466 5% 0.38%
0.014745844781072675877050816 10% 1.5%
0.032220914373087674975117359 15% 3.2%
0.055704042949781851858398652 20% 5.6%
0.084744091852316990275274806 25% 8.5%
0.118949192725403987583755553 30% 12%
0.157983098125747077557540462 35% 16%
0.201547413607754017070679639 40% 20%
0.249306998440163189714677100 45% 25%
0.302103025348741965169160432 50% 30%
0.360397850933168697104686803 55% 36%
0.422649730810374235490851220 60% 42%
0.481125478337229174401911323 65% 48%
0.571428571428571428571428572 70% 57%
0.666666666666666666666666667 75% 67%
0.750000000000000000000000000 80% 75%
0.823529411764705882352941177 85% 82%
0.888888888888888888888888889 90% 89%
0.947368421052631578947368421 95% 95%

真随机事件[编辑]

平均分布[编辑]

一些机制会在0到1之间产生一个随机值并在最小值 / 最大值的梯度中平衡,包括

  • 单位的攻击力(如果有最小最大攻击力范围)
  • 正补金钱奖励(如果给定最小最大范围)
  • Roshan icon.png 肉山重生时间(8到11分钟)
  • Chaos Bolt icon.png
    最低伤害:90/110/130/150
    最高伤害:180/220/260/300
    最低眩晕时间:1.25/1.5/1.75/2 (天赋 2.25/2.5/2.75/3)
    最高眩晕时间:2.2/2.8/3.4/4 (天赋 3.2/3.8/4.4/5)
    伤害和眩晕时间负相关
  • Doppelganger icon.png
    重新出现范围:325
    选择目标区域内随机一个位置,计算过程可能是极坐标系中0-360°极角和0-325极径为最小/最大梯度
  • Freezing Field icon.png
    最低轰击距离:195
    最高轰击距离:785
    在四个90°(0°–90°, 90°–180°, 180°–270°, 270°–360°)内的角度可能是随机的

离散分布[编辑]

几个随机事件都具有类似的概率离散状态。

  • 强化神符有6种类型和2个位置的离散分布
  • 中立阵营在小的,中的,大的和远古的阵营中产生不一样的生物

其他[编辑]

伪随机事件[编辑]

除了列出的技能之外,25%上下坡落空几率中立物品的掉落几率也是用伪随机分布。

英雄和单位技能[编辑]

物品技能[编辑]

遗留数据[编辑]

以下表格为从原版WarCraft3 DotA网站上引用的遗留数据。P(T)表示理论几率,P(A)表示实际几率。C是PRD常数。N最大值是根据会超过1的性质得到的最小数字(也就是一定会触发的次数)。N平均值N的期望值:也就是N×概率的结果之和。SDN的标准差(standard deviation),一个用来衡量数据的离散程度的值,使用大家熟知的公式得出。标准差越低,几率就越一致。为了作对比,SDt表示真随机分布中N的标准差,使用N = 1N = 264的样本公式得出。SDt(真随机分布)都比SD(伪随机分布)要高,因此真随机分布的一致性就没那么高了。

P(T) P(A) C N最大值 N可能性最高的值 N平均值 SD SDt
5% 5.0% 0.00380 264 16 20.00 10.30 19.53
10% 10.0% 0.01475 68 8 10.00 5.06 9.50
15% 15.0% 0.03221 32 6 6.67 3.31 6.16
20% 20.0% 0.05570 18 4 5.00 2.43 4.48
25% 24.9% 0.08475 12 3 4.02 1.90 3.49
30% 29.9% 0.11895 9 3 3.34 1.54 2.81
35% 33.6% 0.14628 7 3 2.98 1.35 2.43
40% 37.7% 0.18128 6 2 2.65 1.17 2.10
45% 41.8% 0.21867 5 2 2.39 1.03 1.83
50% 45.7% 0.25701 4 2 2.19 0.91 1.62
55% 49.3% 0.29509 4 2 2.03 0.83 1.45
60% 53.0% 0.33324 4 2 1.89 0.74 1.30
65% 56.6% 0.38109 3 2 1.77 0.69 1.17
70% 60.1% 0.42448 3 2 1.66 0.63 1.05
75% 63.2% 0.46134 3 2 1.58 0.57 0.96
80% 66.7% 0.50276 2 1 1.50 0.50 0.87

版本历史[编辑]

版本
改动

引用[编辑]