吶,好久不見有沒有想我??!
舉手手:沒有!而且你說好的要寫的系統(tǒng)理論的萬字長文還欠著呢!
這次呢,之所以想到寫馬爾科夫,是因?yàn)樗河挚匆娏艘恍┖猛娴念}目。
而且借助工具之前喜歡的數(shù)列方法就顯出差距來,并且也打算真正分享一些有用的東西。長話短說,先看題目。
不要被題目各種奇怪的矩陣和看著高大上的術(shù)語嚇到,我們一步一步來分析這個(gè)看似高大上實(shí)則只要3步就能輕輕松松解決的裝X知識點(diǎn)。
首先,我們還是得先看下馬爾科夫鏈的介紹:同馬爾可夫鏈,因安德烈·馬爾可夫(A.A.Markov,1856-1922)得名,是指數(shù)學(xué)中具有馬爾可夫性質(zhì)的離散事件隨機(jī)過程。該過程中,在給定當(dāng)前知識或信息的情況下,過去(即當(dāng)前以前的歷史狀態(tài))對于預(yù)測將來(即當(dāng)前以后的未來狀態(tài))是無關(guān)的。(一字不差復(fù)制粘貼。)
這個(gè)介紹一共分2個(gè)部分:
1. 因?yàn)槭邱R爾可夫研究出來的,所以就叫馬爾科夫鏈了(看見沒,大佬們就喜歡這些噱頭,以后我也……扯遠(yuǎn)了扯遠(yuǎn)了)。
2. 指數(shù)學(xué)中具有馬爾可夫性質(zhì)的離散事件隨機(jī)過程。這句話有3個(gè)關(guān)鍵詞:馬爾可夫性質(zhì),離散事件,隨機(jī)過程。
離散事件,隨機(jī)過程就不用水字?jǐn)?shù)解釋了。那么什么是馬爾可夫性質(zhì)呢?拿強(qiáng)化來說,一把7級的武器強(qiáng)化的各種概率和之前的強(qiáng)化過程無關(guān),即不管你上一次強(qiáng)化是成功失敗都不影響這一次的概率。
真是淺顯易懂!
所以,我們在使用馬爾科夫方法計(jì)算的時(shí)候一定要注意類似保底之類的機(jī)制。
但是在有保底之類的機(jī)制時(shí)我們?nèi)匀豢梢允褂眠@種方法,因?yàn)橛斜5讜r(shí)我們?nèi)钥梢缘玫酱_切的概率轉(zhuǎn)移矩陣,與馬爾可夫性質(zhì)是不沖突的。
接下來,讓我們看看X格滿滿的馬爾可夫究竟如何算出期望。
第一步:一步概率狀態(tài)矩陣
也就是題目說的初始狀態(tài)。
好的,列完了,我們將這個(gè)矩陣先稱為矩陣A,進(jìn)入下一步。
不過考慮到文章字?jǐn)?shù)也是評判作者水平的參數(shù)之一,我決定解釋一下。
好的,解釋完了,我們進(jìn)入第二步。
第二步:N步概率狀態(tài)矩陣
首先,我們已經(jīng)知道了矩陣A就是強(qiáng)化一次后的結(jié)果。
舉手手:華策華策,可是我們并沒有經(jīng)過強(qiáng)化的計(jì)算啊!
Na?ve!我們不要被題目所迷惑,因?yàn)槲覀兊某跏紶顟B(tài)其實(shí)是這樣的:
將真·初始狀態(tài)的單位矩陣記為E, 而我們的所謂的初始狀態(tài):
初始狀態(tài)=真·初始狀態(tài)×一步概率狀態(tài)矩陣
A1 = E×A = A
已經(jīng)經(jīng)過一次計(jì)算了。
真是淺顯易懂!
那么我們強(qiáng)化2次的概率怎么計(jì)算呢?
A2 = E×A×A = A2
真是簡單直接!內(nèi)部的邏輯雖然精妙但理解起來并不復(fù)雜,得到的A2對應(yīng)的每一個(gè)元素都對應(yīng)著一個(gè)初始狀態(tài)達(dá)到目標(biāo)狀態(tài)的概率。并且其結(jié)果正是我們利用數(shù)列計(jì)算所得的結(jié)果!
所以,依此類推,第n次的概率狀態(tài)矩陣即為:
An = An
這就是數(shù)學(xué)的魅力啊!我們順利進(jìn)入第三步!
第三步:期望
這時(shí)候請?jiān)试S我搬出期望計(jì)算公式:
離散型:
連續(xù)型:
舉手手:華策華策,這兩種期望怎么選擇呢?
問得好,還記得馬爾科夫的三個(gè)關(guān)鍵詞嗎?是的,馬爾可夫預(yù)測的是離散事件。
所以我們選取離散型的期望計(jì)算公式,其中Xk即為強(qiáng)化的次數(shù),Pk即為強(qiáng)化次數(shù)對應(yīng)的概率。而且在我們游戲設(shè)計(jì)中的期望計(jì)算也大多是離散型的,而且掌握了馬爾科夫后離散型的期望計(jì)算也不用借助公式采取連續(xù)性的積分求解了。
棒棒噠!
以題目要計(jì)算的0級到3級的期望為例,我們直接?。?/p>
其中:Pn即為Pnij (i=0,j=3)
舉手手:華策華策,為什么要特地把n=150提出來呢?
問得好,還記得馬爾科夫的三個(gè)關(guān)鍵詞嗎?是的,馬爾可夫預(yù)測的狀態(tài)是獨(dú)立不受之前狀態(tài)干擾的,而第150次強(qiáng)化必定達(dá)到3級一步概率狀態(tài)矩陣與之前不同,所以不能算到150。其實(shí)可以寫在一起,但是為了避免出錯(cuò)強(qiáng)調(diào)這一點(diǎn),我把它寫到求和公式外面了。
這里我們就不考慮0級能不能一步3級的問題了,我們假定他,能!任性!
所以我們只把第150次排開。
那么第150次如何計(jì)算呢?
讓我們先計(jì)算出第149次的狀態(tài)矩陣:
好的,列完了,我們將這個(gè)狀態(tài)概率矩陣先稱為矩陣A149。
由于第150次必定升到3級,所以此時(shí)的一部狀態(tài)方程為:
我們將這個(gè)一步狀態(tài)概率矩陣先稱為矩陣λ150。
所以A150= A149×λ150
所以,馬爾科夫就靠每一個(gè)狀態(tài)的狀態(tài)矩陣和每個(gè)狀態(tài)間的概率轉(zhuǎn)移矩陣鏈接在一起。(妙啊,有沒有想起區(qū)塊鏈?)
也即:
PS:這里要注意矩陣叉乘時(shí)的前后順序。
理解了馬爾科夫的原理,包括保底在內(nèi)包括之前每10秒刷新的BUFF題在內(nèi)的各種概率題我們都可以迎刃而解了。所以覺得數(shù)列看著頭大的朋友們,我們一起看馬爾科夫吧!
好的,我們回到題目,發(fā)現(xiàn)問題已經(jīng)解決了,以后大家就可以光明正大地裝X了,馬爾科夫這么簡單怎么可能不會!所以,我們總結(jié)一下,遇到這種筆試題,不要慌,隨便寫。作為一個(gè)策劃,一定要能扯,會扯,扯得有逼格。
所以,我們這篇文章已經(jīng)看完一半了!剩下的問題就是如何快速地計(jì)算出An或者說如何快速地得到一個(gè)矩陣的冪呢?
在爬過了諸多巨坑后,目前Excel計(jì)算矩陣冪運(yùn)算的方法有如下幾種:
1. 運(yùn)用公式將1*16的單元格區(qū)域構(gòu)造為4*4的內(nèi)存數(shù)組計(jì)算后再利用sumproduct取出值(失敗了一部分,而且公式極度復(fù)雜= =,有函數(shù)大佬讀到此處請不吝賜教!)
2. 拉n*4=n的矩陣表(禁言大佬情誼演示,但是我丑拒了……):
3. MMult公式嵌套
a) 這里要注意,Excel中MMult是叉乘,SUMPRODUCT是點(diǎn)乘。
b) Excel中power函數(shù)與^的作用是一致的,不能夠用來計(jì)算矩陣的冪。
4. Excel自帶迭代計(jì)算(禁言大佬情誼演示,但是我依然丑拒了……)
5. 數(shù)據(jù)-規(guī)劃求解
6. 插件法
7. 自定義函數(shù)
8. VBA循環(huán)
9. 外接小程序(算了,好像還不如寫VBA…)
10. 選其他各種語言也可以(算了,好像還不如寫VBA…)
11. 選matlab(好主意?。?/p>
其中最簡單方便的應(yīng)該是自定義函數(shù)。
好的,寫完了,果然簡單方便,棒棒噠!
好的,測試了下完美運(yùn)行,棒棒噠!
已經(jīng)得到了如此詳盡的表格,期望算起來自然是手到擒來,易如反掌,如探囊取物,唾手可得,輕而易舉便可算出!
好的,算完了,棒棒噠!
不過初嘗馬爾科夫,寫個(gè)10000000次循環(huán)模擬驗(yàn)算一下也是可行的。
好的,寫完了,棒棒噠!
好的,運(yùn)行后結(jié)果幾乎沒有誤差,棒棒噠!
當(dāng)然,如果每過一段時(shí)間概率矩陣變化會較大的話,建議采用另一種格式,當(dāng)然也就不需要自定義函數(shù)了,而且并不會丑拒!
好的,測試了下完美運(yùn)行,棒棒噠!
不過借助自定義函數(shù)或是lookup還是可以將表構(gòu)造成之前計(jì)算期望的表格,棒棒噠!這里就贅述了。
本文特別感謝:禁言大佬,從半夜12點(diǎn)多陪著我扯皮,一直陪我到早上6點(diǎn)把文章都寫好了,真是感動游戲圈的情誼。
扯皮內(nèi)容大概是這樣的:
00:30
大佬:其實(shí)你可以不用函數(shù)。
我:打死我也不會點(diǎn)開VBA的!
01:00
我:我找到了一個(gè)插件!但是要money……
大佬:我覺得……
我:打死我也不會點(diǎn)開VBA的!
01:30
我:我想到了一個(gè)絕妙的公式!可惜這里空白的地方太小,寫不下……
大佬:我覺得……
我:打死我也不會點(diǎn)開VBA的!
2:00
我:我決定去下matlab……
大佬:我覺得……
我:打死我也不會點(diǎn)開VBA的!
2:30
大佬:我覺得……(順帶發(fā)擼貓截圖)
我:打死我也不會點(diǎn)開VBA的!
3:00
大佬:我覺得……
我:VBA真好用!
順便下次要改個(gè)標(biāo)題:99%的人都能學(xué)會的馬爾科夫!
聯(lián)系客服