歡迎光臨鄭州東方爐襯材料有限公司官網(wǎng)!
熱門搜索:
全國技術(shù)服務(wù)熱線:
400-188-3352
固話:0371-6989-9918
手機:132-0388-5388
郵箱:zzdflc@163.com
地址:河南省新密市南環(huán)路與龍?zhí)堵方徊婵?/p>
文章出處:東方爐襯 發(fā)表時間:2024-09-08 11:08:55
【52pk 1月28日消息】 “朝神”是被《爐石傳說》玩家們所熟知的明星選手,作為清華大學(xué)數(shù)學(xué)系的博士,他對《爐石傳說》有另一種解讀:爐石就是一個隨機看臉的運氣游戲?其實未必,基于概率計算采取盡量有利于自己的行動才是致勝之本。
什么是偽隨機?《爐石傳說》的隨機是怎樣的隨機?朝神在這篇文章中給出了自己的解讀和猜測。值得一看!
以下是朝神的文章《數(shù)學(xué)系爐石專業(yè)畢業(yè)論文》:
玩爐石以來一直覺得自己水平還不是那么太爛,但也沒寫過啥攻略之類。以前愛打競技場,每個月基本上了傳說也不怎么打天梯,沖個排名卻月月打個100多名沒法在榜單上露臉好裝逼。最近就愛瞎組一堆逗逼卡組 去天梯各種找虐,偶爾直播但總感覺對爐石也沒啥貢獻,沒弄個中外爐石第一人(cai)的美名對不起自己,所以想想就寫點東西吧,寫完這個估計也不寫別的了,總不能寫自傳吧,所以盡量寫的好點,不留遺憾。
這文章主要是一個菜雞對《爐石傳說》這個游戲一些亂七八糟的想法,希望可以對大家理解游戲有所幫助。
概率與隨機
《爐石傳說》是一款運氣游戲這好像是大家的共識。這游戲到底是不是運氣游戲我們以后再探討。所謂運氣游戲就是說這游戲充滿了各種隨機性:起手摸牌,飛刀、25仔、奧術(shù)飛彈、門、砰砰博士的兩個蛋蛋……各種隨機性。
經(jīng)常有人問我說爐石里啥啥概率怎么算,這類問題最經(jīng)典的就是奧術(shù)飛彈打死精靈龍的概率,這個問題起源于爐石剛內(nèi)測時法爺?shù)膹姶螅蠹壹娂妿Ь`龍針對,當(dāng)時貼吧漫山遍野的問這個問題,以及求削弱精靈龍。
(編者注:計算概率的方式有多種,朝神此次使用“對稱性”解決問題)
我稍微回答一下這個問題好了,當(dāng)然我們假設(shè)對面英雄血量超過3,對方場上只有精靈龍,己方場上沒有法傷火妖之類的牌。最簡單的求法是你假設(shè)精靈龍有3血或者更多,但是只要受2點傷害就會死,由于精靈龍吃到2發(fā)奧彈后無法再吃,這個假設(shè)是不影響求解的,于是奧彈打臉0或1精靈龍死,打精靈龍0或1則不死,由對稱性這答案是二分之一,不需要1秒就能算出來。
對于經(jīng)常得到的三分之一、七分之三之類。我只想說,用乘法原理這種答案在0.00001秒內(nèi)就可以排除。
下面這段寫給高中生、學(xué)概率論第一章的大學(xué)生,以及所有感興趣的玩家,我盡量說的詳細(xì),保證人人都能看懂。
我們稍微復(fù)雜一下問題,萬一場上有血法(沒有用狗頭代替)、藍(lán)龍、火妖,或者什么叢林梟獸,加個恩澤,對面萬一是歡笑姐妹姐夫,黑暗教徒圣殿加過血,或進行過隨從交換。你丟的萬一是機關(guān)槍或者10費的那張不知道啥玩意??傊褪菍γ鎴錾嫌星抑挥幸粋€n血的隨從,你打了一發(fā)隨機m點的傷害,對面英雄血量足夠多(就是大于等于m,小于m的有興趣自己算),打死那個隨從概率是多少?當(dāng)然m到大于等于n,不然就是0。
我們分析一下這個問題,一發(fā)隨機傷害打出去,打臉打隨從各是二分之一,如果隨從死亡了 那只能以概率一打臉,因此不需要計算分母肯定是2的冪,然后我們考慮隨從在第幾發(fā)后剛好死亡,設(shè)為k,這個k大于等于n,也就是說k發(fā)之前各0.5打臉打怪,之后只能打臉,發(fā)生這事概率為2的k次冪分之一,然后這樣的事件有多少呢?就是前面的k-1發(fā)有哪n-1發(fā)打怪了,所以是組合數(shù)(k-1 n-1)這個乘以2的k次冪分之一,再從n到m進行sigma求和就是答案。
如果我算錯了歡迎大家指正,畢竟我數(shù)學(xué)不太好,關(guān)鍵不能誤人子弟。
但是上面的答案是對的嗎?其實嚴(yán)格上來說不對,哪里錯了,關(guān)鍵在于奧彈打臉打怪是不是真的是二分之一。
所謂的隨機只是數(shù)學(xué)上的第一定義而已,一般對于古典概率空間,認(rèn)為這些事發(fā)生的概率相等。然而,到目前為止,現(xiàn)實中并沒有純隨機的例子,你就算拋硬幣也是由硬幣的造型、你的力度、空氣的阻力、拋下的高度等等決定的。隨之而來的問題是,電腦也沒法產(chǎn)生隨機事件。
游戲中怎么決定你開的卡是金橙還是白卡、你起手摸的是肉醬還是伊瑟拉、奧術(shù)飛彈干的是臉還是怪呢?所謂偽隨機數(shù),就是一列0到1之間的數(shù),偽隨機數(shù)有很多的產(chǎn)生辦法,我也只是略知一二,大家初中高中數(shù)學(xué)書后面會有的什么隨機數(shù)表就是最簡單的偽隨機數(shù)。
偽隨機數(shù)就是大家說的發(fā)牌員。
比如程序員可以寫這隨機數(shù)在0到0.5之間打臉,0.5到1之間打怪,或者是什么區(qū)間摸知識古樹,什么區(qū)間摸咆哮等。
這樣就有一個幾乎可以忽略不計的問題,一般而言其實你摸樹人和摸咆哮的概率是不一樣的(這個例子可能不對,取決于摸牌的程序是如何實現(xiàn)的,至少奧彈打兩個精靈龍就會有這個問題),因為計算機精度有限無法保存無限小數(shù),所以對于因子不止2和5時就會出現(xiàn)不等可能的情景,但這個差距小到可以忽略。
最大的問題和最大的機遇在于:
偽隨機數(shù)有很多產(chǎn)生辦法,但是有個長度,這個長度之后就出現(xiàn)了循環(huán),不過據(jù)說現(xiàn)在的數(shù)學(xué)已經(jīng)可以做到這個偽隨機數(shù)列足夠長到一個人在有生之年幾乎無法用完這個數(shù)列,但《爐石傳說》用的是啥我就不知道了。
如果《爐石傳說》用的是個固定的偽隨機數(shù)列,那么當(dāng)兩個會玩的人對戰(zhàn)時,發(fā)牌員決定好了所有的牌序(如果牌序是游戲開始之前就決定的話)。然后之后所有的隨機事件都由偽隨機數(shù)列確定,某種程度上可以說勝負(fù)幾乎是決定好的,我們只是一步步去實現(xiàn)開始就設(shè)定好的事情,但是你可以改變隨機事件發(fā)生的時間來影響勝負(fù),同時隨從的站位和出場的先后順序?qū)⒅陵P(guān)重要!如果奧彈或飛刀的目標(biāo)是根據(jù)隨從位置來標(biāo)記時,站位將是關(guān)鍵,如果是根據(jù)隨從出場順序來標(biāo)記的,先搖報告再下收割機還是先下收割機再搖報告又是關(guān)鍵,考慮到有個亡語結(jié)算的問題,我更相信是后者,所以不要隨便懷疑別人的出牌順序,說不定人家是看穿了發(fā)牌員!
關(guān)鍵就是《爐石傳說》使用了怎樣的隨機數(shù),比如我知道C語言里有個由當(dāng)前時間決定種子的偽隨機數(shù)時。假設(shè)有一個天大的機遇知道《爐石傳說》隨機數(shù)是怎么個順序,以及偽隨機數(shù)是怎么轉(zhuǎn)化成偽隨機事件的(比如暴雪的某程序員),那么他可以在恰好的時間開包,包包出金橙,可以奧彈想打臉打臉想打怪打怪,元氣彈發(fā)發(fā)打20,這游戲真不知道怎么輸,細(xì)思極恐。所以燒繩是有道理的,捏著連環(huán)爆裂禱告也是有道理的,因為這樣可以改變偽隨機數(shù)種子而致勝。
說了這么多其實都是廢話,我們都不知道爐石的源代碼,在我們不知道的這個條件下就是原來的古典概率空間,問題還是這么簡單,上面算的概率都沒有任何問題。
既然如此,像文章開頭快速計算至少是估算簡單的概率是非常重要的,因為在這種充滿隨機性的游戲里,你必須選擇使自己獲勝概率最大的方式進行游戲,例如大家?guī)缀趺烤侄伎赡苊鎸Φ娜绾翁幚砼榕椴┦康膬蓚€蛋蛋,這也就是暴雪爸爸經(jīng)常說的雖然隨機但是卻可以體現(xiàn)技術(shù)的所在,然而我覺得這句話非常片面。
概率和隨機就寫到這吧,剩下的以后再寫。
相關(guān)文章