【三國(guó)殺】基于蒙特卡洛仿真的張昌蒲“嚴(yán)教”技能分析

武將介紹

????張媽作為三國(guó)殺史上設(shè)計(jì)非常優(yōu)秀的一名武將,早已被冠上了“數(shù)學(xué)老師”、“隊(duì)友智商檢測(cè)機(jī)”等名號(hào),玩張昌蒲時(shí)那種恨鐵不成鋼的感覺屬實(shí)揪心,那么到底是“嚴(yán)教”技能沒用還是隊(duì)友小笨蛋呢,本帖對(duì)其技能“嚴(yán)教”拿牌數(shù)權(quán)且進(jìn)行一個(gè)分析,與殺友們共同探究其中的數(shù)字之謎。(本帖非攻略帖,攻略含量很低,想看攻略的可以看看其他UP主的攻略帖如二分算法等)。
????為了確切的知道張昌蒲“嚴(yán)教”能拿其中多少?gòu)埮?,采用蒙特卡羅仿真的方法模擬嚴(yán)教亮出的牌組,然后以整數(shù)規(guī)劃模型對(duì)其進(jìn)行建模,從而計(jì)算其能拿到最多牌的最優(yōu)策略。

????為方便表述,記n為發(fā)動(dòng)“嚴(yán)教”時(shí)亮出的牌數(shù),f(n)為通過“嚴(yán)教”最多能獲得的牌數(shù)。在張昌蒲的技能設(shè)定中,n最小為4,通過發(fā)動(dòng)“省身”可以增加“嚴(yán)教”亮出的牌數(shù),游戲中設(shè)定為n最大為10。
蒙特卡洛仿真方法
????蒙特卡洛仿真方法(Simulation)實(shí)際上就是對(duì)現(xiàn)實(shí)操作的模擬,與我們?cè)谌龂?guó)殺OL中亮出牌沒有本質(zhì)區(qū)別,為了方便求解而采用此方法。通過不斷的重復(fù)模擬,變量觀察值必將收斂到其理論均值附近,觀察值的累積均值隨仿真重復(fù)次數(shù)的變化如下,因而可取重復(fù)次數(shù)為10000次。
????筆者看到網(wǎng)絡(luò)上有基于窮舉概率的“嚴(yán)教[4~8]”的理論分析(坤姐b站號(hào)有),這種算法自然是極好的,但仿真方法具有更好的實(shí)用性和擴(kuò)展性,比如可以擴(kuò)展到任意亮牌數(shù)的“嚴(yán)教”從而規(guī)避概率組合爆炸。(主要是窮舉概率咱也算不明白?。?br>

混合整數(shù)線性規(guī)劃求解“嚴(yán)教”
????顯然,可以將此問題建模為如下整數(shù)規(guī)劃模型進(jìn)行求解,現(xiàn)有的很多張昌蒲計(jì)算器的小程序應(yīng)該也采用的此類方法。

????上述模型為定制化的模型,實(shí)際上我們可以將其推廣到將任意I張卡牌劃分到J組,也將模型推廣到更具有一般性的混合整數(shù)線性規(guī)劃模型(MIP)。需注意,本帖只計(jì)算拿牌數(shù)最多的最優(yōu)解,在游戲中每張卡牌對(duì)張昌蒲和被“嚴(yán)教”玩家的價(jià)值和需要度非常復(fù)雜,且卡牌之間的組合價(jià)值也不盡相同,實(shí)戰(zhàn)中需隨機(jī)應(yīng)變,如果在目標(biāo)函數(shù)中給每張卡牌的價(jià)值賦權(quán)重則可以使此模型更為實(shí)用些,但永遠(yuǎn)無法保證最優(yōu)策略。

結(jié)果分析
????經(jīng)過實(shí)驗(yàn),主要結(jié)果匯集到如下表中:

????????通過分析,有如下結(jié)論:
隨著亮出牌數(shù)量的增多,“嚴(yán)教”能拿到的牌數(shù)量也顯著增加(廢話)。同時(shí)可以歸納出如下結(jié)論,若不限制亮出的牌數(shù)量上限,則有極限:

????因?yàn)榱脸雠频狞c(diǎn)數(shù)和為奇數(shù)和偶數(shù)的概率分別占二分之一,而偶數(shù)全拿的極限概率將逐漸收斂到1。
???2. 在亮出牌數(shù)[4,10]的區(qū)間內(nèi),隨著亮出牌數(shù)量的增多,能拿到的最多牌數(shù)比n-1能拿到的牌數(shù)之差在逐漸降低,因而玩好張昌蒲應(yīng)合理運(yùn)營(yíng)好自己的血量,在血量健康時(shí)積極追求第一次和第二次“省身”,因?yàn)檫@時(shí)侯“省身”的收益最高,“省身[1]”的收益高達(dá)1.71+1.5=3.21,而由1.中的極限式也可以推算出“省身”的收益將無限逼近2.5。
? ?3. 在求解時(shí)間方面,隨著亮出牌數(shù)量的增多,計(jì)算時(shí)間的增量也有增加趨勢(shì),因而在嚴(yán)教[7+]后切勿苛求隊(duì)友能夠全拿走,知足常樂、常棣之華才是硬道理。
?? 4. 進(jìn)一步統(tǒng)計(jì)了“嚴(yán)教”無解和觸發(fā)“手牌上限-1”效果(未拿走的牌數(shù)大于1)的概率如下,用作參考:

?????可以看到,嚴(yán)教[6+]是必定有解的,有沒有殺友知道其中的原因,筆者除了窮舉法也未知其原理。而嚴(yán)教[4]手牌上限-1的概率竟高達(dá)0.5以上,因而如果需要手牌上限更應(yīng)當(dāng)找機(jī)會(huì)發(fā)動(dòng)“省身[1]”或省身[2]。
????本期的分享就到這里啦,感謝觀看。
????
參考代碼
