【原神】暴率 : 暴傷 = 1 : 2為最優(yōu)?完全錯誤!編程窮舉帶你目睹最細(xì)結(jié)論
說明
1:2這個結(jié)論在我看來是極不準(zhǔn)確的,于是才有了這次編程窮舉
好吧,其實是這個游戲太長草了
此圖便是所謂1:2的由來:

此推導(dǎo)通過引入“資源單位”的概念,以“主詞條最高是0.466攻擊力、0.311暴擊率或者0.622暴擊傷害”為依據(jù),定義“一個資源單位(記作M)”:
1 M = 0.015攻擊力 = 0.01暴擊率 = 0.02暴擊傷害??(就很像數(shù)學(xué)上的一種消元方法)
前提假設(shè):一名角色最多擁有S個M,即資源是有上限的
若暴擊率 = x , 暴擊傷害 = y ,則有 x/0.01 + y/0.02 = C? (即有C個M是與暴擊有關(guān)的)
? 2x + y = K (K為常量)

于是EX = a [1 + x (K - 2x)]
由二次函數(shù)知識可得:?x = K/4? ? y = K/2? 時 EX 最大。
之后,再考慮余下的(S - C)個資源單位的分配
在這個算法中,我們忽略了很多問題:
1. x是不能超過1的,x可能取不到K/4,這種算法并未對x的定義域做出限制
2. 百分比攻擊的效用是受白字影響的,是無法用來定義單位資源的
3. 風(fēng)傷作為一個獨立乘區(qū),其效用非常大,該算法是忽略了的
不得不提的是,在米游社有大佬對這種算法進(jìn)行了優(yōu)化,其作者并未給出結(jié)論,僅是讓大家作為參考、提供思路,筆者才疏學(xué)淺,需要大二才能看懂,無法向大家進(jìn)行更深層次的解析,深感抱歉。
但以筆者大一的修為,編程窮舉亦能解決。耗時3天,耗資100大洋,頭發(fā)數(shù)根,若能得到各位老婆三連支持,筆者將不勝感激。
若想要所有數(shù)據(jù)、程序用作學(xué)習(xí)、引用或以此為根據(jù)指導(dǎo)自己的圣遺物、武器搭配,請私信聯(lián)系。
明碼標(biāo)價,只要2元,童叟無欺。
摘要
本算法將以80級已突破的魈攜帶90級武器為例,計算風(fēng)傷,忽略技能倍率、元素抗性,畢竟只是多乘一個系數(shù)(天賦999時,第一下低空是5.7,高空是7.125),此外,因為大家都沒見過魈堆精通,所以不考慮精通。
至于圣遺物,考慮二風(fēng)二角斗士的buff,因為四件套對風(fēng)傷沒有加成的。
主詞條的選擇具有多樣性的圣遺物,比如:攻擊杯和風(fēng)傷杯;攻擊頭、暴傷頭和暴擊頭。
(ps:up我覺得充能才是永遠(yuǎn)的神,但此例考慮充能沙就太難了,所以只考慮攻擊沙)
約定:以G表示數(shù)值攻擊力、BG表示百分比攻擊力、BL表示暴擊率、BS表示暴擊傷害、F表示風(fēng)元素加成
(不同乘區(qū),顏色不同)
暴擊率最高為1
武器暫時只考慮90級精一決斗、黑巖(被動滿啟動)、西風(fēng)、流月、千巖、試做buff疊滿時的傷害,之后會首先排除西風(fēng)、流月、試做,詳見正文。
因為匣里是加精通的,不考慮;
五星武器過于bug,而且平民玩家一般只有一把,不用做選擇,不考慮,且根據(jù)四星武器的情況大概也能大致做出選擇。
列表內(nèi)容及其含義:
某圣遺物副詞或武器屬性?=
?[數(shù)值攻擊力(G),百分比攻擊力(BG),暴擊率(BL),暴擊傷害(BS),風(fēng)元素傷害(F),備注]
(若只想看結(jié)論,請?zhí)^程序部分)

程序部分
人生苦短,我用python
一、將90級精一武器的屬性輸入列表:

在輸入的過程中,我們便可以排除西風(fēng)、流月針、以及試做,因為其沒有與千巖一戰(zhàn)。而決斗之槍和黑巖刺槍則與千巖長槍有較大的區(qū)別。
二、生成所有圣遺物副詞條:

咱每次強化都只取二三檔的平均值,太離譜46.8%暴傷副詞條不在考慮之內(nèi)
說明:所謂二三檔是指強化圣遺物時副詞條提升的量有四個檔(詳見CV8098960)
關(guān)于初始詞條:咱只考慮了4詞條,初始詞條相當(dāng)于沒有副詞條的圣遺物強化新增了4個詞條,初始檔位和強化的提升檔位是一樣的。
三、生成圣遺物:
CT 表示 詞條

其他位置的圣遺物也類似以這種方法生成,同一位置的所有圣遺物放進(jìn)同一列表中,即某個圣遺物是某種圣遺物列表里的一個元素,類型為list,它其中的元素包含了主詞條和副詞條。
四、定義計算面板的函數(shù):
statistics是面板屬性的意思
輸入武器、五個圣遺物、杯子和冠的類型返回總面板級對應(yīng)的圣遺物搭配,其中總面板的數(shù)值攻擊力只包括圣遺物提供的數(shù)值攻擊力,不包括角色和武器提供的白字攻擊力。


第3行的i0指的角色自帶0.05暴擊率,0.5暴擊傷害,圣遺物套裝效果0.18百分比攻擊,0.15風(fēng)元素傷害加成。
并通過條件語句保證暴擊率不超過1
返回的sta為:
[[[1號位],[2號位],[3號位],[4號位],[5號位],[總面板,'杯子類型和頭類型']],[和上一項一樣],[和上一項一樣],……]
六、定義傷害函數(shù):
dam指傷害

返回的result為:
[[sta,dam],[sta,dam],[sta,dam],……]????#dam的類型為float,sta是一個二維列表
七、分不同武器計算不同圣遺物類型的傷害期望:

倒數(shù)第三行插入標(biāo)注
得到的result是
[[[[1號位],[2號位],[3號位],[4號位],[5號位],[總面板]],'武器',dam],[和上一項一樣],[和上一項一樣]]
八、以傷害為依據(jù)從大到小排序:

九、刪除圣遺物不同但面板相同導(dǎo)致的傷害相同的元素;

十、定義一個函數(shù),將副詞條的屬性匯總成一句話(因為沒有必要把所有副詞條分開說):

同時,保留兩位小數(shù)
此時的結(jié)果result1中的一個元素是
["圣遺物提供x數(shù)值攻擊力,x百分比攻擊力,x暴擊率,x暴擊傷害,x元素傷害加成,總面板為[xx, xx, xx, xx, xx, 'xx杯和xx頭']", '武器名', 傷害期望]
十一、輸出為txt:


結(jié)論
得到了36638組數(shù)據(jù)
第一頁:(每頁34行)

第一頁的所有結(jié)果的選擇均給到了千巖長槍和風(fēng)傷杯
畢竟千巖白字565,四璃月陣容還有55.6%的物攻加成,12%的暴擊率加成
暴擊率 : 暴擊傷害 =??1 :2.2039
1:2這種說法的誤差接近10%

至于頭的選擇則是平分秋色
來到第二頁

第二頁則是花樣繁多
暴擊率 : 暴擊傷害 =??1 :2.3164
1:2這種說法的誤差約為15%
我們能清晰的看到一些堆百分比攻擊的(紅色)
一些小小賭狗(藍(lán)色),雖然人家有八十幾的暴擊率,但比第一頁的幾乎滿暴要低很多
第二頁的最后一個的期望已經(jīng)比第一低了200了,乘上倍率(低空5.7)已經(jīng)低了1140了。
第三頁:

第三頁冠的選擇依然沒有定論
但出現(xiàn)了幾個百分比攻擊離譜的搭配
第四頁:

第四頁首現(xiàn)黑巖刺槍(疊滿buff狀態(tài)下)
此外,第二三四頁均有一些歪了一次小攻擊的
第N頁:



此時傷害已經(jīng)降低了428?*?5.7 = 2440

此時傷害已經(jīng)降低了3739

因為決斗非常容易導(dǎo)致滿暴,所以數(shù)量少。



決斗槍前三搭配指定搭配暴傷頭
然而,這個排位的千巖圣遺物的小攻擊都已經(jīng)歪到430去了


最后一頁:

全歪的小攻擊,一槍仍有35967
這個故事告訴我們,只要咱升的是攻擊類,咱們都有光明的未來。
由于咱假設(shè)的都是不算歪的,所以傷害都是比較離譜的,這里得到的絕絕絕大部分情況都已經(jīng)可以稱得上畢業(yè)了。
介于此,筆者截取了傷害為畢業(yè)60000,即期望值是60000/5.7 = 10526;傷害為略畢業(yè)50000,即期望為8771的部分;小畢業(yè)40000,即期望7017部分分析
注意:這里說的是期望傷害為這么多,不是暴擊的傷害;其實也到差不差,畢竟暴擊率高嘛。
60000:

暴擊傷害和暴擊率的比分別是2.3、1.72、4.68、2.83、2.33
與1:2大相徑庭
50000:
60000與50000之間差了14695行,是所有數(shù)據(jù)的40%

暴擊傷害和暴擊率的比分別是3.14、3.53、3.34、5.75、2.08、5.53、2.68、1.25、2.9、6、3.3
依舊與1:2大相徑庭
40000:
35267行,與50000檔相差11368行,跨過了總行數(shù)的31%

暴擊傷害和暴擊率的比分別是0.95、4、1.5、0.93、6、4.2
依舊與1:2大相徑庭

總結(jié)
以我的結(jié)論來看,1:2對追求極限的普通人來說最優(yōu)是完全錯誤的。
當(dāng)然,在究極畢業(yè)開大第一下便有72583的左右的“極限”期望傷害時(筆者的算例中每一次強化都是取的平均檔,也就是沒有出現(xiàn)46.8%暴傷這樣的離譜圣遺物),1:2.2左右是最優(yōu)選擇,與1:2較為接近。
改進(jìn)空間
1.筆者得到的最終數(shù)據(jù)中,后半部分出現(xiàn)了很多小攻擊歪滿的圣遺物,這在現(xiàn)實中是不會有人去把圣遺物小攻擊歪滿的??梢钥紤]在生成圣遺物時設(shè)定必歪非攻擊詞條的次數(shù)。這樣可以得到更低傷害時的面板數(shù)據(jù)。
2.算法優(yōu)化空間巨大,因為筆者python只學(xué)到第四章,所以還不會傳說中的“動態(tài)規(guī)劃”“剪枝算法”,結(jié)果就是這個程序跑起來巨痛苦。
3. 五星武器中和璞鳶啟動過慢、護摩受生命影響,受限于硬件等因素,無法考慮。

后話
本文耗費了筆者清明節(jié)3天假期,程序初成時在自己的i7 16G內(nèi)存的電腦上跑了一次,提示memory error,開20G的虛擬內(nèi)存又跑了一次,依舊如此,開100G虛擬內(nèi)存跑了一晚上,第二天起床半小時后虛擬內(nèi)存再次占滿,電腦直接重啟。
本來想放棄了,但想起了“現(xiàn)代信息科學(xué)技術(shù)概論”課上講的大數(shù)據(jù)和云計算,就想著放云上跑一跑。
但由于才大一,就沒法用自己學(xué)校的云,只好選擇了阿里云。
清明假期的第二天,體驗了一下阿里云注冊送的7天4G內(nèi)存服務(wù)器,果斷占滿。
于是充了115租了一個16核128G內(nèi)存的,6元一個小時,好貴。
但快是真的快
10分鐘不到跑了178行,15分鐘就把我最后的bug發(fā)現(xiàn)了。
對比一下5元一小時的網(wǎng)吧,真的良心價。
這里BB一下,不要去租什么云電腦云游戲了,直接阿里云租服務(wù)器,多棒啊。服務(wù)器也有windows系統(tǒng)的,延遲也很低,打字基本感覺不到的延遲,瀏覽器就可以用,跟4399開全屏似的。
回歸正題,bug跑出來的時候,內(nèi)存已經(jīng)占到95%了,這時連排序那一步都還沒有到。
直接升級了24核198G內(nèi)存的服務(wù)器,一小時8塊多。
一不小心選的Linux系統(tǒng)的服務(wù)器,命令行操作根本不會。但憑借我在cmd里pip的經(jīng)驗,我還是打開了服務(wù)器的python3。
用了一天時間修bug,完善,優(yōu)化輸出結(jié)果,學(xué)習(xí)如何把結(jié)果輸入文檔,如何從服務(wù)器把文件下載到本地…………到了睡覺的時候,看了一下別人寫的1:2是如何算出來的,意外發(fā)現(xiàn)了我沒有加角色初始便有的0.05暴擊率和0.5暴擊傷害?。?!
有點絕望,主要是服務(wù)器有點小貴,但沒辦法,程序要用160G的內(nèi)存。
于是為了加上這點暴擊,又是一頓暴改。因為我不會自動關(guān)閉服務(wù)器,如果讓服務(wù)器跑著去睡覺的話,那錢包就會哭泣,所以等到了第二天。
我終于得到了結(jié)果,但發(fā)現(xiàn)風(fēng)傷算了兩次,改!
沒法得到圣遺物的面板,只能得到總面板,改??!
有錯別字,改?。?!
當(dāng)我用python改txt里的錯別字時我絕望了(細(xì)心的你一定發(fā)現(xiàn)了我的圖片前面幾張的“暴”字寫成“爆”了),我傻乎乎地用read(),replace(),無限報,全然忘記了txt閱讀器就有的對文本進(jìn)行批量修改地功能?。?!我是憨憨。
既然都看都這兒了,求給個三連吧——
當(dāng)然了,如果你對我的數(shù)據(jù)感興趣,想要用數(shù)據(jù)給自己的魈老婆搞一套優(yōu)質(zhì)的圣遺物,歡迎私信,明價2元