(原创)信长传敌方等级分析
这是我很久以前和颜慕回约好要做的工作(鄙视这家伙太监了,大家有兴趣
可以看下我那时的回帖,那时还没坚定要把这工作做下来呢,呵呵)
那个时候,基本上以经确定了两个事实:
1,信长等级的影响与其他人并不完全相同;
2,除信长外的其他人的等级的影响完全相同,因此其他人只有平均等级有影响。
后来的测试数据也证明了这一点,因此本帖中以y代表敌方小兵等级,x1代表信长
等级,x2代表其他人的平均等级,n代表我方包括信长的所有人物数。注意不包括友军
,友军的等级等于敌方小兵等级。另外,敌方大将的等级按照光荣的传统,猜测应
该只是在y的基础之上加上修正因子,因此也无需讨论。
从颜慕回的帖子中可以看到,当时就有网友提出
y=k1*x1+k2*x2+C
这上说法,我一开始也是赞同这种观点的。昨天刚开始分析时也
是按照这个思路做下去(不想误导了很久…………),大家可以看看我测
的几组数据,在保持x1或者x2一个值不变时,y似乎确实就是另外一个的线性
函数:
敌方等级 信长等级 其他人平均等级
58 99 1
64 99 15
70 99 29
75 99 43
81 99 57
87 99 71
93 99 85
99 99 99
83 1 99
85 15 99
87 29 99
90 43 99
92 57 99
94 71 99
97 85 99
99 99 99
1 1 1
9 15 1
17 29 1
25 43 1
33 57 1
42 71 1
50 85 1
58 99 1
可是,当我对我测的大量数据进行线性回归时,线性相关系数都比较小,而且置信区间比k1,k2的实际值都大……
这时,我又想到要保证在保持x1或者x2一个值不变时,y是另外一个的线性函数也可以取
y=k1*x1+k2*x2+k3*x1*x2+C
因此,我再次作线性回归,得到的结果比前面的结果并没有什么改善。
没有办法,我只有放弃很快得到结果的希望,耐下性子来进行数据测试。
这回我为了让数据全面并且回归结果比较接近事实,特别让
x1,x2分别取1,15,29,43,57,71,85,99这个等差数列中的8个数,共有64种组合。
当我在固定x2为57(这也是我改用这种办法测的第一组数,因为1和99肯定早就测了…………)
时,我发现了y不完全是x1线性函数的反常:
敌方等级 信长等级 其他人平均等级
48 1 57
50 15 57
52 29 57
55 43 57
57 57 57
65 71 57
73 85 57
81 99 57
很显然,在x1=x2这一点出出现了跳跃,但是在x1<=x2和x1>=x2这两个区间上
线性规律似乎仍然分别保留,只是在x1=x2这一点线性系数出现了跳跃
因此我把x1<=x2和x1>=x2的所有数据都测出来并分开进行线性回归,
哈哈,得出的结果果然线性保持得很好了。r已经达到3个9一个8甚至4个9的程度,置信区间也比较合理了
这样子,规律已经呼之欲出了。
不过,接下来取整的问题又难倒了我,因为线性回归是不会判断有没有取整的。
所以接下来我都只有反复回归再加猜测,测试临界点数据等等,不过还是有的东西没搞很清楚。
不过,大致规律可以出来了:
1,当信长等级低于或者等于其他人平均等级时,敌方小兵等级就等于我方包括信长在内的所有人的
平均等级,取整似乎是四舍五入,或者说加0.5再取整。用公式表示即:
y=[(x1+x2*(n-1))/n+1/2]
方括号表示取整函数或者说是高斯函数啦。
2,当信长等级高于或者等于其他人平均等级时,信长等级的影响大大提高,其线性系数超过1/2,具体的
公式是:
y=[((n+1)/2n)*x1+((n-1)/2n)*x2+1/4]
对于这个公式,我觉得系统应该是这样子算的:
先算出所有人的平均等级,就按照第一个公式进行计算,即:
y1=[(x1+x2*(n-1))/n+1/2]
再以y1和信长的等级x1取平均:
y=[(y1+x1)/2]
这样子算的话,会与首先给出的那个式子会有些细微的差别的,呵呵。个人猜测应该是后面两步的这种。
我一开始估计常数应该是1/4,但始终想不出来为什么会是这个,想想可能就是这个了。
至此,我的这点成果就写到这里就完了。现下还有两个问题就是:
1,两种情况下的公式并没有进行数据的暴力测试(尤其是后期的数据),不敢保证绝对正确,但逻辑上推测应该没什么太大问题。特别是要指出常数项的确定个人不敢完全打包票哦。这个东西我不擅长,只是瞎猜瞎凑的。
2,两种情况下公式中的n意义并不完全明确。因为到后期了有的人不能出场,而且出场人数也有限制,此时n怎么取,而且x2应
该是取哪些人的平均都有待进一步研究。
由于这个游戏我并没有后期的存档,所以后期的数据支持几乎没有。另外这两天搞这个也搞疲了。哪位大大有兴趣且对于取整问题比较有心得的不妨把这个问题完全研究透,某是顶不住了………
总而言之,虽然未能完全确定规律,但是小小成果也不敢独藏,特发上来给大家分享(其实就想骗点功绩,嘿嘿……节度大人帮点忙喽),另外大家有心的有能力的请继续加把劲把这个摸透呀!
后记,因为网络的原因,发了一次没成功,又重写了一次(这么长的东西………………)
还好,第二次我记得先复制内容了,55555………………
有的网友说这个太数学化了,不太好看,那我来用简单的文字说明一下。
其实我啰嗦了半天,实质上很简单,就是两点:
第一,如果信长等级低于(其他人的)平均等级,则敌方的基础等级就是我方所有人的平均等级;由于这个平均等级不一定是整数,所以要四舍五入。比如我给的数据中,第一关,我方信长1级,其他有5个都是99级,所以敌方基础等级就是1加上5个99再除以6,是82.67,四舍五入就是83,所以这关的小兵都是83级。
第二,如果信长等级高于(其他人的)平均等级,则敌方的基础等级就是把第一条得到的等级再与信长的等级进行平均(就是相加再除2),因为结果也不一定是整数,所以要把小数部分去掉。比如我给的数据中,第一关,我方信长99级,其他5个人都是1级。按第一条算的平均等级是17.3级,四舍五入是17级。然后再和信长等级99平均,就得到58,所以这一关中敌方小兵都是58级。
(注:这里加括号是因为加不加括号结果都是一样的。如果低于其他人的平均等级,也就低于包括自己的平均等级。如果高于其他人的平均等级,也就高于包括自己的平均等级。如果等于…………………………)
就是这样子,很简单的两点。另外,友军的等级也是按这两条算的,就是和敌方基础等级一样。需要再说明的就是有名字的将领和有些比较难的关卡有些小兵是在基础等级基础上再加上一个修正值的。
[ 本帖最后由 俺是马甲 于 2006-11-28 13:21 编辑 ]
|