随机分布用电脑的模拟都是很近似的,跟真实的随机有差别。除非大量的实验,我的专业是核工程,有同学在用软 件模拟中子的随机行程,往往需要大量的重复实验。
[QUOTE=Adra;101206]
回顾
伪随机分布 是指魔兽争霸III引擎中为某些百分率攻击修正的动力可能性计算。这个概率不是取一个静态百分数,而是开始 设为一个很小的初始值,然后如果连续的攻击修正没有发生,他会渐渐地变大。但攻击修正起作用时,概率会降回 为初始值。这样系统不可能实现一连串的成功修正,也会让整个游戏至少有一个攻击修正,最终概率会超过100 %并“强制”在下一个攻击中实现修正。所以攻击修正的分布不是真正的随即,也即称之为 伪随机分布。 一般来讲,魔兽争霸III中依循这个概率分布的技能概率在最接近的5%的边界之内。
伪随机性技能
下面列出的是现在已知的依循这种随机系统的技能,该表 不包含 激发性技能。
致命一击 (例: 幻影刺客 的恩赐解脱)
重击 (例: 虚空假面 的时间锁定. 但白牛的巨力挥击  遵循这个分布。)
粉碎 (例: 地狱火 Flaming Fists, 潮汐 的锚击)
减速之球 (例:残废, 漩涡)
强化外壳 (例:圆盾,先锋盾)
概率机制
致命一击为例
假设20%的概率发生致命一击。 如果游戏中是真实随机,那么任一个能实现致命一击的单位每一次攻击触发的概率都是20%,不管在过去的攻击 中是否触发了致命一击。一个简单的工具在1到100之间随机选一个整数,如果这个整数小于或等于20,那么引擎会让这个攻击成为致 命一击 (这通常由激发概率技能来构建)。那么从长远来看,这个工具会使攻击成为致命一击的概率为20 %,但不能阻止无尽的连续致命一击,或者相反,在整个游戏中都没有致命一击,尽管这两种情况的概率 很小。为了不让玩家因此抱怨并平衡这种随机的游戏机制,魔兽争霸III的开发者实现了 伪随机概率分布
并不是每一次攻击出现致命一击的概率都是20%,第一次攻击出现致命一击的概率是5.57%。如果第一次没 出现,那么第二次出现的概率是11.14%。并且如果前两次都不是,第三次出现的概率是16. 71% 。依次下去,每次的概率增加5.57%。但当致命一击出现的时候,下一次攻击出现的概率就会被重置为5.5 7%,长远来看,致命一击的数目除以整个的攻击次数大约就是所说的20%,但是现在很难出现一系列的致命一 击,也很难出现17次攻击没有一次致命一击的情况,但第18次攻击(假设前17次连续不出现致命一击)出现 致命一击的概率是100.26%。结果,游戏让没出现一次致命一击的攻击次数为1/20%=5,最多次数为17。
下面的部分介绍伪随机分布的特殊机制。很长也可能很无聊,除非你喜欢数学或编码。其他人就略过到最后的的总 结部分吧。
概率公式
上面所说的概率技能,魔兽争霸III中的引擎采用了一个初始百分率值,如果攻击修正不实现,那概率就会随攻 击次数线性增加。因此攻击修的实现的概率公式为:
Code:
P(N) = C * N
在这个公式中, P(N) 是在第N次攻击中实现修正的百分率, N 是自上次修正后的攻击次数(最小值1), C是一个初始的常数,也是每次概率增加的数值。因为这是个线性的公式,当N到达一个足够大的值时,P(N) 就会超过1,并且下一次攻击中一定有攻击修正。简单的代数可知这个N就是1/C。C值就跟那个技能的概率有关;在下面的文章中,那个技能所激发的概率成为P(E),就是期望 概率值。
伪随机分布常数
下面显示了两个C值表。 P(E) 是期望概率值, C 是常数值,并且不发生攻击修正的最大连续攻击次数不超过 最大值 N。所以如果致命一击的概率值是45%,连续4次正常攻击有可能发生,但第五次攻击会触发。第一个表有每个5 %倍数的理论C值,是用数值方法计算的(感谢 ICallBotSolo 和 Cano Tolto).
理论概率常数
P(E)
C
Max N
-----
--------
------
5%
0.00380
263
10%
0.01475
67
15%
0.03222
31
20%
0.05570
17
25%
0.08474
11
30%
0.11895
8
35%
0.15798
6
40%
0.20155
4
45%
0.24931
4
50%
0.30210
3
55%
0.36040
2
60%
0.42265
2
65%
0.48113
2
70%
0.57143
1
75%
0.66667
1
80%
0.75000
1
85%
0.82353
1
90%
0.88889
1
95%
0.94737
1
暴雪并没有采用上面表中的任何一个理论概率常数,但下面会搞清楚这点。下面这个表列出了WC3引擎采用的C 值,相对应真实的概率。这些值由上百万次的攻击实验估测。
真实概率常数
P(E)
C
Max N
P(Actual)
-----
--------
------
--------
5%
0.00380
263
5%
10%
0.01475
67
10%
15%
0.03221
31
15%
20%
0.05570
17
20%
25%
0.08475
11
24.9%
30%
0.11895
8
29.1%
35%
0.14628
6
33.6%
40%
0.18128
5
37.8%
45%
0.21867
4
41.6%
50%
0.25701
3
45.7%
55%
0.29509
3
49.4%
60%
0.33324
3
53.0%
65%
0.38109
2
56.4%
70%
0.42448
2
60.1%
75%
0.46134
2
63.2%
80%
0.50276
1
66.7%
85%
0.57910
1
70.3%
90%
0.67068
1
75.0%
95%
0.77041
1
81.3%
 
 
 
下面的表有一列比较理论值和真实值:
编译概率常数
P(E)
理论 C
真实 C
理论最大 N
真实最大 N
P(Actual)
-----
-------------
---------
-----------------
------------
--------
5%
0.00380
0.00380
263
263
5.0%
10%
0.01475
0.01475
67
67
10.0%
15%
0.03222
0.03221
31
31
15.0%
20%
0.05570
0.05570
17
17
20.0%
25%
0.08474
0.08475
11
11
24.9%
30%
0.11895
0.11895
8
8
29.1%
35%
0.15798
0.14628
6
6
33.6%
resized40%
0.20155
0.18128
4
5
37.8%
45%
0.24931
0.21867
4
4
41.6%
50%
0.30210
0.25701
3
3
45.7%
55%
0.36040
0.29509
2
3
49.4%
60%
0.42265
0.33324
2
3
53.0%
65%
0.48113
0.38109
2
2
56.4%
70%
0.57143
0.42448
1
2
60.1%
75%
0.66667
0.46134
1
2
63.2%
80%
0.75000
0.50276
1
1
66.7%
85%
0.82353
0.57910
1
1
70.3%
90%
0.88889
0.67068
1
1
75.0%
95%
0.94737
0.77041
1
1
81.3%
上表来看,真实C与理论C在30%以内很接近, 但接下来分开的较大。也就是说,随着P(E)的增大,真实的攻击修正概率远比期望概率小,这是暴雪要改正的 东西。
概率偏差
很明显,总体上的攻击修正实现概率应该尽可能接近P(E)。也就是说,经过无限次连续攻击后,攻击修正的次 数除以总的攻击次数理想值时P(E)。但是魔兽争霸III的伪随机分布实际上的总体概率小于P(E)。在P (E)很小的时候,负偏差并不大,P(E)=30%的时候是个分界点,以后的偏差会有显著的增大:P(E) =80%时实际的概率值大约只有66.7%。这种偏差可能源自以下两种因素:
1.C值位数的省略。能提供的C值并不能是一个无限位数的值,对现行概率公式几乎不可能精确的模拟给出P( E)值的随机分布。简单的计算C值都需要大量的计算时间,考虑到需要将整个概率分布匹配成一个常数。这就是 为什么上面讲的技能都在最近的5%之内;所以也并不计算C值,那将占据大量的CPU资源,开发 者为5%, 10%, 15%, ...95%设计了固定的C值,
这些值代替上面的公式来确定P(N)。这些数位省略的定义值比真实值小,这 也导致了实际概率值小于P(E)。这种影响对大的C值可以忽略,但这不能解释对于大的P(E)值时有大的偏 差。
2. 阶梯P(E)值。暴雪把魔兽争霸修正为阶梯型,不是传统的那种形状,最大的P(E)值是牛头人的粉碎,概率 25%。P(E)在该点以后显著增大不像是个巧合。当暴雪实现了伪随机分布,他们可能只计算了他们要用到的 百分率的C值,其他值只是由这些值简单的估算(例如用一个调整过的指数曲线)。显然他们没有验证这些值是否 有用,才导致了现在的情况。
随机分布
为了让伪随机分布和真实随机分布之间的差别更明显,我们考虑一个P(E)=10%的技能。下面的图显示的是 在上次攻击修正后,第N次攻击修正的概率,这里是真实的随机。要注意在真实的随机分布中每一次攻击发生攻击 修正的概率总是10%,很简单,第N次攻击没有修正的概率是(1 - P(E))^(N - 1) 。对于N=2,概率是0.09:90%的概率第一次攻击没有攻击修正,乘以第二次的概率(对于真实随机机制 这个值是10%)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。