影月圓舞

有關裝甲亂數和傷害公式的驗證與假說

[i=s] 本帖最后由 影月圓舞 于 2015-4-23 23:25 编辑

聲明:

本文實用性為零,實用至上的提督可以考慮是否閱讀本文或者只看最後的結論

前幾天nico上有人上載了一份裝甲亂數資料的整理,隨即引起了驗證班的一陣討論

本文為簡述目前裝甲亂數與傷害公式假說與實測數據不相符的地方以及現在的暫定結論

重要提示:

雖然提出了新假說和公式,但一般情況下使用舊公式計算傷害仍然是足夠準確和相對方便的做法。個人建議除非需要非常精細地計算傷害,否則照常使用舊公式即可

註:除非有特別註明,否則本文中所有的中括號 [ ] 階代表向下取整

发表回复

  1. 影月圓舞说道:

    [i=s] 本帖最后由 影月圓舞 于 2015-4-23 20:58 编辑

    以前一些驗證的節錄

    這裡節錄部份以前的一些相關驗證

    先是傷害公式中的取整問題

    註1:floor()代表括號內的數值需要向下取整

    註2:當時徹甲彈補正仍未實裝

    根據以上驗證,計算傷害時在乘完閾值前補正後需要向下取整。另外也不排除乘完閾值後補正後需要向下取整的可能性

    然後是裝甲亂數範圍的驗證

    測試對象為5-4 boss的戦艦ル級flagship(裝甲99),樣本數約270

    實質裝甲值的計算是由傷害和火力逆推算出來的,具體計算法為:

    推算裝甲值 = [ [ 基本攻撃力 × 閾值前補正 ] × 閾值後補正 – 實測傷害 ]

    或者

    推算裝甲值 = [ [ 基本攻撃力 × 閾值前補正 ] × 閾值後補正 ] – 實測傷害

    註:由於實測傷害為整數,所以兩者算出來的數值是一樣的



    理論裝甲值上限為99 x4/3 = 132

    理論裝甲值下限為99 x2/3 = 66

    實測裝甲值上限 = 129 ≈99 x ( 1 + 0.3 )

    實測裝甲值下限 = 70 ≈99 x ( 1 – 0.3 )

    因此有人猜測裝甲亂數的實際範圍比2/3 – 4/3更窄,可能大約為0.7 – 1.3

    之後有人質疑裝甲亂數可能為正態分佈,導致接近上下限的裝甲數值較少遇到

    但之後有人整理了以上數據,並給出了以下分佈圖

    從以上分佈看來,裝甲亂數有可能是平均分佈而不是正態分佈。因此推測裝甲亂數的實際範圍可能比2/3 – 4/3更窄

  2. 影月圓舞说道:

    [i=s] 本帖最后由 影月圓舞 于 2015-4-23 21:04 编辑

    最近的裝甲亂數驗證

    前天,日方有人整理了以前的1-1戰艦適重砲測試數據、1-1迴避測試數據以及1-1驅逐命中測試數據,從中使用與之前戦艦ル級flagship同樣的方法對裝甲值進行逆推算,並給出了以下分佈圖









    從中可以看出有不少與以前理論或假說不同的地方

    裝甲亂數上下限問題

    假設「裝甲值 x 裝甲亂數」計算方法為「裝甲值 x ( 1 ± n% ) 」

    假設在先前逆推算時裝甲值有向上取整,則「裝甲值 x 裝甲亂數」的實際計算數值可能比逆推算值小,在此情況下對駆逐イ級(裝甲5)、駆逐ロ級(裝甲6)、駆逐ハ級(裝甲7)和先前的戦艦ル級flagship(裝甲99)的裝甲亂數可能上限和下限進行推算,結果如下:

    (combined那項為整合了駆逐イ級、駆逐ロ級、駆逐ハ級三者數據的可能上下限)

    可以看見兩者的裝甲亂數上限範圍沒有重疊

    若果在先前逆推算時裝甲值有向下取整,結果又如何?

    這裡我就偷懶直接貼上驗證班的整理結果了:

    可以看見無論是哪一種取整方法,兩者的上限都沒有重疊的地方

    由此推測至少對於亂數上限來說,直接增加一定裝甲比例的說法不可信

    可能有人會質疑,會不會是閾值後補正出現小數點的問題。事實上原驗證者之後也指出了即使去除了暴擊的數據,分佈仍然沒有變化。另外原數據也沒有包含任何觀測射擊、接觸或者徹甲彈的攻擊,因此基本能排除閾值後補正這可能性

    即使真的有閾值後補正,這種數量的樣本數連一次也沒有出現範圍外數據也已經足夠說明問題了

    另外一些使用原假說來計算裝甲值後仍是整數卻沒有出現在分佈上的數據(例如裝甲6沒有出現推算裝甲值為4的數據、裝甲12沒有出現推算裝甲值為8和16的數據)也不能單純用取整問題來解釋

    之後,有人補充了其他傷害數據,也發現了類似的問題

    軽巡ホ級的裝甲亂數範圍逆推算:

    驗證串上另一組傷害數據:



    對以上數據進行逆推算:



    除了直接推算亂數上下限外,亂數的分佈也能說明一些問題

    根據戦艦ル級flagship的亂數分佈圖,推測亂數分佈可能為平均分佈

    但以上的驅逐亂數分佈圖很明顯不是平均分佈。若果亂數上下限並不是以「裝甲值 x ( 1 ± n% ) 」來計算的話,那樣至少位於邊界的推算裝甲值出現頻率與其他的出現頻率不一樣這點就能解釋了

    裝甲亂數分佈問題

    把戦艦ル級flagship的亂數分佈圖與驅逐亂數分佈圖放在一起看,可以看出戦艦ル級flagship的亂數分佈趨向於平均分佈,但是驅逐的亂數分佈很明顯不是平均分佈

    若果說邊界的推算裝甲值與其他不同這點可以用上下限來解釋,那樣一些非邊界的亂數分佈仍不是趨向於平均分佈的現象就不能用上下限來解釋了

    這不禁令人去猜想實際的裝甲亂數分佈並不是平均分佈,而是類似於N面骰的離散分佈

  3. 影月圓舞说道:

    [i=s] 本帖最后由 影月圓舞 于 2015-4-23 23:43 编辑

    新裝甲亂數假說

    驗證班提出了新的裝甲亂數假說來解釋以上的矛盾

    舊有的「裝甲 x 亂數」由新名詞「防禦力」取代

    防禦力 = 0.7 x 裝甲 + 0.6 x 亂數

    亂數 = [ 0 , 裝甲 – 1 ] = 0 至(裝甲 – 1)之間的任一整數

    例如裝甲5的可能亂數為0、1、2、3、4

    推測每個整數亂數的出現機率一樣

    或者,防禦力可以看成

    防禦力 = 0.7*x+0.6*rand(0,x-1)

    其中x為裝甲值

    根據此公式,

    防禦力下限 =0.7 x 裝甲

    防禦力上限 =0.7 x 裝甲 + 0.6 x (裝甲 – 1)

    這假說能很好地解釋上述問題

    首先是推算裝甲值範圍。只要把計算出來的防禦力向上取整,便能得出之前的推算裝甲值範圍

    注意分析過程中防禦力向上取整是合理的分析,因為實測傷害為向下取整而得出來的

    然後是推算裝甲值分佈。把防禦力向上取整後由於離散分佈的原因,能重現驅逐推算裝甲值不一的現象

  4. 影月圓舞说道:

    [i=s] 本帖最后由 影月圓舞 于 2015-4-28 17:40 编辑



    新傷害公式假說

    把新的防禦力概念套進傷害公式內,便能得出新的傷害公式

    傷害 = [(攻擊力 – 防禦力)x 彈藥量補正 ]

    攻擊力 = [ [ 基本攻撃力 × 閾值前補正 ] × 暴擊補正 ] × 彈著觀測補正 × 接觸補正

    防禦力 = 0.7 x 裝甲 + 0.6 x 亂數

    亂數 = [ 0 , 裝甲 – 1 ] = 0 至(裝甲 – 1)之間的任一整數

    或者,防禦力可以看成

    防禦力 =0.7*x+0.6*rand(0,x-1)

    其中x為裝甲值

    註1:中括號 [ ] 內的數值需要向下取整

    註2:閾值後補正之一的徹甲彈補正仍然有效。這裡沒寫上徹甲彈補正是由於目前不清楚徹甲彈補正是否好像暴擊補正一樣需要向下取整。這裡傷害公式只寫上有數據支持是否需要取整的項目

    關於小數點取整的補充資料:

    閾值前補正

    這裡不管用新還是舊裝甲亂數假說也能得出乘完閾值前補正後需要向下取整的結論

    防禦力

    首先根據新防禦力假說,防禦力不可能向下取整,不然不可能得出驅逐的推算裝甲分佈







    以上裝備的日向其中一發二連對駆逐イ級打出了115點傷害

    經過計算後發現若果使用新防禦力假說,計算傷害時防禦力向上取整的話沒可能打出115點傷害(不管二連補正有沒有取整)

    由此推測防禦力不需取整

    閾值後補正

    彈著觀測補正

    使用與分析防禦力時相同的數據,若果二連有向下取整,不可能打出115點傷害

    由此推測彈著觀測補正不需取整

    接觸補正



    細心計算的話會發現若果接觸補正需要向下取整,會出現超出理論範圍的傷害數據

    由此推測接觸補正不需取整

    暴擊補正

    有人查看以前的傷害數據發現若果暴擊補正不向下取整,會出現超出理論範圍的傷害數據

    由此推測暴擊補正需要向下取整

    彈藥量補正

    根據以上驗證,推測彈藥量補正不需取整

  5. 影月圓舞说道:

    [i=s] 本帖最后由 影月圓舞 于 2015-4-24 21:10 编辑

    其他一些需進一步驗證的項目

    改修火砲火力加成

    有人反映對於裝備兩格或以上的9- 10星中或大口徑砲的艦娘曾打出超過理論傷害的數值(無論使用舊或新公式計算階如此)

    推測可能為改修加成公式需要微調

    浮點誤差

    有人反映艦娘中破時打出了超過理論傷害的數值

    其後的追加驗證發現我方陣型為輪型時同樣有此問題

    推測可能為中破補正和輪型陣(兩者補正系數階為0.7)的浮點誤差,導致攻擊力在取整後比正常低了1

  6. 影月圓舞说道:

    [i=s] 本帖最后由 影月圓舞 于 2015-4-28 19:07 编辑

    暫定結論

    新傷害公式假說

    傷害 = [(攻擊力 – 防禦力)x 彈藥量補正 ]

    攻擊力 = [ [ 基本攻撃力 × 閾值前補正 ] × 暴擊補正 ] × 彈著觀測補正 × 接觸補正

    防禦力 = 0.7 x 裝甲 + 0.6 x 亂數

    亂數 = [ 0 , 裝甲 – 1 ] = 0 至(裝甲 – 1)之間的任一整數

    或者,防禦力可以看成

    防禦力 = 0.7*x+0.6*rand(0,x-1)

    其中x為裝甲值

    註1:中括號 [ ] 內的數值需要向下取整

    註2:閾值後補正之一的徹甲彈補正仍然有效。這裡沒寫上徹甲彈補正是由於目前不清楚徹甲彈補正是否好像暴擊補正一樣需要向下取整。這裡傷害公式只寫上有數據支持是否需要取整的項目

    個人補充:

    一、

    雖然提出了新假說和公式,但一般情況下使用舊公式計算傷害仍然是足夠準確和相對方便的做法。個人建議除非需要非常精細地計算傷害,否則照常使用舊公式即可

    二、

    在防禦方裝甲值(裝甲亂數範圍)足夠高的情況下,亂數分佈可近似看成是平均分佈。但此做法的誤差隨裝甲值減少而增大,當裝甲值過少時,近似看成平均分佈並不是恰當的做法

    三、

    老東西了,除了田中誰也不能肯定這就是真正的公式

    說不定今天發了帖結果明天就被推翻了呢(笑)

  7. Aris说道:

    [i=s] 本帖最后由 Aris 于 2015-4-23 21:17 编辑

    来晚了,过来学习

    努力去看完了{:4_88:},正好这次活动能够验证下新的公式,虽然差距并不大{:4_88:}

  8. sakurakusa说道:

    [i=s] 本帖最后由 sakurakusa 于 2015-4-23 22:31 编辑

    {:4_110:}学习学习

    总觉得大学数学有点用了?

  9. cbldabing说道:

    应该可以占位学习了{:4_96:}

  10. Ctrl_Dagon说道:

    前排占座听课(๑•̀ㅂ•́)و✧

  11. 黑之琉璃说道:

    准备听取结论 {:4_100:}

  12. 朝岚暮凪说道:

    {:4_102:}前排听讲座

  13. 水雲逸说道:

    {:4_93:}這遊戲真難玩我選擇死亡

    N面骰的問題啊,我認為除了專門驗證的應該不太需要搞,裝甲值低的單位一炮就被糊死了,敵我都是,考慮也沒有太大的意義,即使是我方裝甲最高的DD天津風和CL神通被BB打中了也是直接進保護的,對上CL DD CA還有點考慮價值,然而這種時候例如 3-5下路 14秋E2 更多要關注的是火力

    當然亂數如果新假說成立,原有的生存力計算都需要重來,但裝甲越高越好,且每一點裝甲的價值大於每一點耐久的結論應該沒什麼變化。唯一的好處是我代碼終於可以減少浮點型了……

  14. windelong说道:

    新米来接受教育

  15. 影月圓舞说道:

    水雲逸 发表于 2015-4-23 21:31

    這遊戲真難玩我選擇死亡

    N面骰的問題啊,我認為除了專門驗證的應該不太需要搞,裝甲值低的單位一炮 …

    所以說這文的實用性不高啊{:4_86:}

    但畢竟傷害計算是遊戲的基礎,我還是覺得有必要到主區發一貼而已

  16. Irelia丶抉择说道:

    前排学习啦,这些方面还是真的不太清楚呢{:4_96:}

  17. hzhh95963说道:

    {:4_93:}于是我的期望伤害全部要重写公式……虽然在最后的数值上应该没有区别……

  18. 影月圓舞说道:

    hzhh95963 发表于 2015-4-23 21:52

    于是我的期望伤害全部要重写公式……虽然在最后的数值上应该没有区别…… …

    對面裝甲夠高的話其實也沒有差別啦{:4_86:}

  19. 戰艦タ级说道:

    {:4_127:}数学不好的看的头昏脑涨

  20. syd09htyk说道:

    [i=s] 本帖最后由 syd09htyk 于 2015-4-23 22:31 编辑

    其实装甲是平均分布很正常,要做出正态分布要的程式资源是平均的好几倍…而且如果是正态分布的话院长以上级数的敌舰将会变得非常恐怖

    那个分布图我一直有疑问的是为什么分布是N面骰形状(而不是全部整数基本相等),虽然说这不拆服务端估计很难有人能给出答案…

    另:我感觉二楼三楼(或者说整个帖子)有点误导成分,事实上装甲乱数+-30%这一直以来的认知是基本没错的,最新验证只是对小数-整数部分再验证方便测伤害的小白鼠,而这个帖子给我的第一感觉是装甲计算方法需要完全推倒重建….

  21. chaim说道:

    今天我家筑摩被fta在T不利下爆了61血,按照旧算法脸还不算最黑,新算法的话乱数就只取到2,已经和最黑没什么差别了吧{:4_127:}

  22. 优等生番长说道:

    李菊福,就是不知道这个装甲的乱数遵循一个什么样的分布

  23. 影月圓舞说道:

    syd09htyk 发表于 2015-4-23 22:26

    其实装甲是平均分布很正常,要做出正态分布要的程式资源是平均的好几倍…而且如果是正态分布的话院长以上级 …

    orz 我2樓標題已經標明了數據是以前的…

    但對於沒怎接觸驗證的人可能真有這印象,我去想想怎樣去改改用字

  24. kyo1321说道:

    光是知道装甲不是正态分布就够我骂田中和角川的程序员几个月了。。。。

  25. syd09htyk说道:

    影月圓舞 发表于 2015-4-23 22:42

    orz 我2樓標題已經標明了數據是以前的…

    但對於沒怎接觸驗證的人可能真有這印象,我去想想怎樣去改改用 …

    还有那条公式其实可以直接写作0.7x+0.6*rnd(0,x-1),比写成中文容易理解多了…

    我相信天朝教育走过来的人应该都能看懂最基本的程式码吧{:4_114:}

  26. 影月圓舞说道:

    syd09htyk 发表于 2015-4-23 22:45

    还有那条公式其实可以直接写作0.7x+0.6*rnd(0,x-1),比写成中文容易理解多了…

    我相信天朝教育走过来的人 …

    {:4_114:}寫這文時我還擔心會不會有人看不明啊

    這樣的話下次編輯時也加上吧

  27. syd09htyk说道:

    影月圓舞 发表于 2015-4-23 22:51

    寫這文時我還擔心會不會有人看不明啊

    這樣的話下次編輯時也加上吧 …

    认真看了五分钟后的简单建议:



    “雖然提出了新假說和公式,但一般情況下使用舊公式計算傷害仍然是足夠準確和相對方便的做法。個人建議除非需要非常精細地計算傷害,否則照常使用舊公式即可”

    这句放到一楼就好了,完美解除了推倒重建的错觉

官方微信

Login

跳至工具栏