恩。。。大家都知道,一个单位对另一个的RF值(设为N)就是如果这回合打在那种单位上就有N/(N-1)的几率再射击一次,但这又是个什么概念呢?说每回合次数比较好理解,不过这个是随机的,只能有一个理论值。通常的算法是模拟XXX次取平均,但这样很麻烦而且最后还是近似值。下面我就用数学方法探讨这个问题。
首先考虑双方只有一种单位,我们只看其中一边的,它对对面单位的RF值是N
战斗过程如下:
第一次射击,N/(N-1)的几率再来,1/N的几率就这样完了;
第二次射击,N/(N-1)的几率再来,1/N的几率就这样完了;
第三次射击,N/(N-1)的几率再来,1/N的几率就这样完了;
......
直到某次碰上那1/N,射击结束,记下射击的次数
重复XXX次,总的射击次数除以模拟次数,得到平均每回合的射击次数n
如果写个程序来做这个的话,你就会发现一个很有意思的结论:
模拟得到平均的射击次数n很接近于你给的N值,模拟次数越多越接近(这只是一个经验性的结论,而且当双方单位不止一种时就没办法了)
恩。。。再研究这个问题,为什么n会近似等于N呢
简化上面的战斗过程,因为每次都有1/N的几率结束射击,我们看成一个几率为1/N的事件,当它第一次发生时结束这个过程(就象在造月,20%的几率为1/5,当出月了你就不造了)
模拟这个问题,事件内定的几率就是1/N(假设我们不知道)
大致的模拟结果:
1 |●●●......●●●
2 |●●●......●●
3 |●●●......●●●●
.
.
.
m-2|●●●......●●
m-1|●●●......●●●●
m |●●●......●●●
模拟m次,红色标记为事件发生,计算n=(总的次数/m)
那这个事件发生的几率就是m/(m*n)=1/n
(总的次数为m*n,因为每个过程在事件发生的时候就算结束,所以事件发生的次数就是m)
1/n是模拟的几率,内定几率为1/N
所以
n=N
一个几率为1/N的事件平均在第N次发生
这是一个很重要的结论
下面的问题就好办了,最后射击次数的计算公式就是
n={1-{(x1/T)*[(p1-1)/p1]+(x2/T)*[(p2-1)/p2]+...+(xN/T)*[(pN-1)/pN]}}^(-1)
其中x(1到N)是有被RF属性的单位的数量,T是对方总数量,p(1到N)是对那N种单位的RF值
比如一个轰炸面对数量相等的LL和HL
n=[1-(0.5*0.9+0.5*0.95)]^(-1)=13.3333333333
BC对BB和两倍的LF
n=[1-(1/3)*(6/7)]^(-1)=1.4
至于之前有帖子研究的在对方舰队固定的情况下如何搭配舰队使射击次数最多或被射击的次数最少之类的问题,由于还要考虑到攻击力等问题,这个只能靠实际的战斗模拟器去实验了。

