像素骑士团常规技能发动率
时间:2014-12-16 11:17:34 来源:k73电玩之家 作者:无息战歌 热度: 135 次
《像素骑士团》关于常规技能发动率按算术加法叠加这里进行了测试计算,在游戏中招募价格更新之后更是抽到了很多价廉物美的人物,所以这里就以限发动一次的吕布去掉之后做一些相关的测试。
《像素骑士团》关于常规技能发动率按算术加法叠加这里进行了测试计算,在游戏中招募价格更新之后更是抽到了很多价廉物美的人物,所以这里就以限发动一次的吕布去掉之后做一些相关的测试。
实验目的:测试技能发动率的计算方式。
实验猜想A:普通技能满足发动条件时发动率按概率乘法叠加
实验猜想B:普通技能满足发动条件时发动率按算术加法叠加
实验材料:
【1】主角装备宿命锻铁锤,24%无条件发动
【2】3只长弓射手,每只7%无条件发动
【3】路西法,13%无条件发动
【4】赵子龙,12%无条件发动
【5】黑色屠杀者,12%无条件发动
【6】大天使米色尔,4%无条件发动
【7】赤眼阿菲德,14%无条件发动
以上共9人,不触发任何组合技
以上9人,发动率算术加和为100%
以上9人,若按概率乘法,所有技能都不发动的概率,也即普攻概率为
0.76 × 0.93 × 0.93 × 0.93 × 0.87 × 0.88 × 0.88 × 0.96 × 0.86 = 34%
实验步骤:
自己与自己对战,记录每回合技能释放及普攻情况。
实验记录:
致命挥舞-11111-11111-11111-11111-11111-11111-11111-11111-11111-11111-11
要害射击-11111-11111-11111-11111-11111-11111-11111-11111-
末日燃烧-11111-11111-11111-11111-11111-111
流星★突-11111-11111-11111-11111-1111
静脉切割-11111-11111-11111-11111-11
天使一闪-11111-1
噩梦凝视-11111-11111-11111-11111-11111-111
普通攻击-
实验统计:
总回合数-200回合
致命挥舞-52次,占26%
要害射击-40次,占20%
末日燃烧-28次,占14%
流星★突-24次,占12%
静脉切割-22次,占11%
天使一闪-06次,占03%
噩梦凝视-28次,占14%
普通攻击-00次,占00%
实验总结:
如果说猜想A是正确的,那么本该 34% 概率出现的普攻却连续 200 次没有出现。这种情况发生的概率仅有
0.66^200 = 8/10000000000000000000000000000000000000(即10的37次方分之8)
所以结论是,猜想A是错误。猜想B是正确。也就是说,10 只 Saber 无普攻。其实这是很早就有的结论了,只是我一直不信。
结果昨晚在群里看到有人讨论组合技能发动的问题,扯到了常规技能的发动率上。有人告诉我就是加法叠加,我打死不信,难道我概率和编程是白学的吗?于是我自己就来做实验了。最后成功将自己打脸。
说白了还是程序员怎么编程的问题。一般来说,如果要我来写,我肯定会写成这样:
从首位英雄开始依次往后。若有满足发动条件的技能,则进行发动判定,掷骰一次。(比如发动率10%,就产生0-99随机数,若为0-9则发动,其余值则不发动)若发动则回合结束,若不发动则向后移位,对下一个满足发动条件的技能进行发动判定,掷骰一次。
如果是这样的话,那就是概率乘法叠加了。两个10%发动的技能总发动率会是19%。但是事实上程序员不会这么写。因为这样写,每回合战斗,为了判定一支队伍是否发动技能、发动哪个技能,都要进行多次掷骰。而整个服务器运行过程中,发生战斗的次数、总回合数是非常多的,这样每回合都进行多次掷骰与判定会给服务器增加很大的负担。
所以实际上程序员采用了这种算法:
从首位英雄开始依次往后。若有满足发动条件的技能,则对应它的发动率,给其分配判定值。(比如有两个10%发动率的技能,那么给第一个分配0-9,第二个分配10-19)若所有满足条件的技能都分配了判定值,还没用完100的话,剩下的分配给普攻;(比如有两个10%发动率的技能,那么给第一个分配0-9,第二个分配10-19,普攻分配20-99)
若100已经分配完毕,则排在后面的溢出发动率不加入判定。(比如有三个60%发动率的技能,那么给第一个分配0-59,第二个分配60-99,第三个不分配)分配结束后,一次掷骰,产生1-100随机数。按照随机数判定释放那个技能或普攻。
使用这样的算法,每回合只用进行一次掷骰。服务器负担减小的不是一点两点。
这样一来,技能发动率就成了算术加法叠加,两个10%发动的技能总发动率会是20%,也就是 10 只 Saber 无普攻。而且也可以看到,只要发动率不溢出,英雄排列顺序对发动率而言,事实上是毫无意义的。
上面的实验统计也证明了这一点。英雄排列顺序只对于发动率溢出的情况有意义而已。比如上面的例子,如果你有两个60%的技能摆在最前面,那么第一个发动率是60%,第二个是40%,摆在其后所有技能全部不发动。
最后,本实验刻意规避了组合技能(事实上我平时是4弓手队),因为组合技能的发动需要再进一步讨论。
热门新闻
我要评论 查看全部评论 (1)>>
k73玩家2015-08-25 09:10:53评论 (5) (0) 回复
我也在想编程的事情怎么可能不是概率乘法啊.....原来还可以这样编写!