概率统计的数学计算解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
概率流程图的数学计算:瀑布算法、圆桌算法、混合算法
概率流程图的数学计算:瀑布算法、圆桌算法、混合算法解析
攻击判定流程研究:瀑布算法、圆桌算法、混合算法解析
攻击判定流程几乎是所有包含战斗玩法的游戏都无法绕过的一块内容,常见的攻击判定流程有瀑布算法、圆桌算法以及混合算法三种。本文简述了这三种判定流程的特征,以实例对比分析了瀑布算法与圆桌算法各自的优点,以期为后续其他战斗数值设计内容的论述提供一定的基础。
攻击判定流程概述
自此开始正文内容的叙述——让我们直接代入一个实例:
在一款游戏中,攻击方有命中率和暴击率两个攻击属性,而防守方有闪避率、招架率和格挡率三个防御属性。于是相应的,一次攻击有可能产生6种判定结果:未命中、普通命中、闪避、招架、格挡和暴击。当采用不同的判定流程进行攻击结算时,6种判定结果出现的频率会截然不同。
1. 瀑布算法
顾名思义,在瀑布算法中,各事件的判定顺序如同瀑布一般自上而下。如果“水流”在某个位置被截断,则后面的流程都将不再继续进行。据我所知,瀑布算法是大多数游戏所采用的攻击判定算法。
上述实例若采用瀑布算法,则会以如下方式进行判定:
瀑布算法流程图
由此我们可以得出:
先判定攻方是否命中再判定是否被守方闪避再判定是否被守方招架再判断是否被守方格挡最后判定该次攻击是否为暴击
瀑布算法特征1:多次掷骰,一次掷骰只判定单个事件的发生与否
瀑布算法特征2:后置判定依赖于前置判定的通过
注:有的游戏会将命中和闪避合并在一次掷骰中判定,这意味着将攻方命中率与守方闪避率合并计算出实际击中概率后再进行掷骰判定,仍是瀑布算法
我们再代入一些具体的数值,设攻守双方角色的面板属性如下:
攻方命中率=90%
攻方暴击率=25%
守方闪避率=20%
守方招架率=15%
守方格挡率=30%
按照上述的流程判定,6种判定结果将会按如下的概率分布:
实际未命中概率=1-命中率=1-90%=10%
实际闪避概率=命中率*闪避率=90%*20%=18%
实际招架概率=命中率*(1-闪避率)*招架率=90%*(1-20%)*15%=10.8%
实际格挡概率=命中率*(1-闪避率)*(1-招架率)*格挡率
=90%*(1-20%)*(1-15%)*30%=18.36%
实际暴击概率=命中率*(1-闪避率)*(1-招架率)*(1-格挡率)*暴击率
=90%*(1-20%)*(1-15%)*(1-30%)*25%=10.71%
实际普通命中概率=命中率*(1-闪避率)*(1-招架率)*(1-格挡率)*(1-暴击率)=90%*(1-20%)*(1-15%)*(1-30%)*(1-25%)=32.13%
瀑布算法的判定结果分布
由此我们可以得出:
l 瀑布算法特征3:各事件出现的概率符合经典的概率计算方法
l 瀑布算法特征4:掷骰轮次越偏后的属性衰减程度越大,但不会出现无效的属性
2.圆桌算法
将所有可能出现的事件集合抽象成一个圆桌桌面,便是圆桌算法这一称呼的由来。圆桌算法的实质,是将所有可能发生的事件状态按优先级依次放上桌面,直至所有事件被放完或
桌面被填满。圆桌算法正是史诗级巨作魔兽世界中所采用的算法。据笔者了解,使用该算法的游戏并不多见,但即便仅魔兽世界这一款,已足以使这种算法成为永恒的经典~ 上述实例若采用圆桌算法,则会用一次掷骰判定该次攻击的结果。
圆桌算法流程图
圆桌算法的操作步骤可以归纳为:
(1)攻方角色的命中率决定圆桌桌面的大小
(2)将各个事件状态按优先级依次放上桌面,直至所有的事件均放置完或桌面被填满(3)若桌面还未填满,则用普通命中填满空桌面
将先前设定的数值代入,6种判定结果将会按如下的概率分布:
实际未命中概率=10%
实际闪避概率=20%
实际招架概率=15%
实际格挡概率=30%
实际暴击概率=25%
实际普通命中概率=90%-实际闪避概率-实际招架概率-实际格挡概率-实际暴击概率
=90%-20%-15%-30%-25%=0%
注:在上述计算中,优先级按如下排序:闪避>招架>格挡>暴击>普通命中
圆桌算法的判定结果分布
可以看出,由于普通命中的优先级最低,所以它被完全挤出了桌面。这意味着,若攻守双方以此数值模型进行对决,则攻击方的攻击结果中将不存在普通命中。
由此我们可以得出:
圆桌算法特征1:一次掷骰即得出该次攻击的判定结果
圆桌算法特征2:事件有优先级,圆桌放满后优先级低的事件将被挤出桌面。这意味着那部分溢出的属性将不再生效
圆桌算法特征3:圆桌内的各事件出现概率不会衰减,只要优先级低的属性没有被挤出圆桌,各种事件的实际发生概率就与面板属性数值吻合
3. 混合算法
这是一种先判定攻方事件,再判定守方事件的判定流程。笔者曾在一篇帖子中看到过这样判定流程,不确定是否有实际的游戏应用,故仅在此做一些简单的理论分析。
混合算法在单方事件的判定中采用圆桌算法,即:
攻方判定结果:普通命中OR未命中OR暴击
守方判定结果:闪避OR招架OR格挡OR被命中
混合算法流程图
注:上面这个图仅作示意之用,从流程图的角度来看可能不太严谨
将先前设定的数值代入,6种判定结果将会按如下的概率分布:
实际未命中概率=10%
实际闪避概率=攻方命中率*闪避率=90%*20%=18%
实际招架概率=攻方命中率*招架率=90%*15%=13.5%
实际格挡概率=攻方命中率*格挡率=90%*30%=27%
实际暴击概率=攻方暴击率*敌方被命中概率=25%*(1-20%-15%-30%)=8.75%
实际普通命中概率=攻方普通命中概率*敌方被命中概率
=(90%-25%)*(1-20%-15%-30%)=22.75%
混合算法的判定结果分布
由此我们可以得出:
混合算法特征1:先判定攻方事件,再判定守方事件,共进行两次掷骰
混合算法特征2:先在单方事件的判定中采用圆桌算法,再用瀑布算法串联攻守双方事件
混合算法特征3:会产生并发动作,例如暴击被闪避等