占卜師的占卜術(shù)(1-背景篇)

一、前言
? ? ? ?知識(shí)不應(yīng)該收費(fèi),因?yàn)橹R(shí)是無(wú)價(jià)的。請(qǐng)尊重他人的勞動(dòng)成果。
? ? ? ?對(duì)此文的任何部分有任何不明確的點(diǎn)或者異議、以及有任何深入研究的想法,歡迎私戳筆者友好討論。

二、背景
? ? ? ?請(qǐng)看以下牌型:

? ? ? ?圖1切7p后默聽(tīng)滿貫,4p是傳統(tǒng)意義上的“大中張”,這里就有兩種邏輯:第一是“反正其他人也不會(huì)切,那不如立直壓制他們做牌,自摸還能有跳滿”,第二是“不立直還是有可能可以撿到其他人漏出來(lái)的4p的,自摸滿貫也不虧”。之前有教練對(duì)這種愚型中張有役默聽(tīng)x翻(x∈[3,6])進(jìn)行了局收支期望的討論,這里先按下不表,想回答一個(gè)更本質(zhì)的問(wèn)題:在這個(gè)巡目,其他三家舍出4p的概率到底有多大?

? ? ? ?在圖1的基礎(chǔ)上,有了圖2。打點(diǎn)和圖1完全相同,區(qū)別是4p在“大中張”的基礎(chǔ)上,變成了dora。同樣是前面的兩種邏輯,“反正其他人也不會(huì)切”的感覺(jué)進(jìn)一步提升了,或許判斷相比圖1又有了一些變化。同樣,這里想回答一個(gè)更本質(zhì)的問(wèn)題:在這個(gè)巡目,其他三家舍出身為dora的4p的概率有多大,相比普通的情況減小了多少?

? ? ? ?圖3切9m后雖然聽(tīng)牌14m,但對(duì)4m完全沒(méi)有興趣。這里也有兩種邏輯:第一是“他家在這個(gè)巡目切1m的概率比切4m高多了,那不如默聽(tīng)等1m,他家切4m見(jiàn)逃,自己自摸4m可以振立”,第二是“即使立直后1m的榮和期待也顯然高于4m,與其這樣不如追求自摸1m的倍滿,自摸4m也能稍微好受一點(diǎn)”。類(lèi)似圖1和圖2,這里也存在一個(gè)本質(zhì)的問(wèn)題:在這個(gè)巡目,其他三家切1m的概率到底比4m高多少?

? ? ? ?在圖3的基礎(chǔ)上,有了圖4。相比圖3,1m變成了dora,默聽(tīng)榮和其他家1m的期待顯然是下降了,或許判斷也有了一些變化。同樣,這里的本質(zhì)問(wèn)題是:在這個(gè)巡目,當(dāng)1m是dora的情況下,其他家是更容易切出1m還是4m,相差多少,相比1m不是dora的情況變了多少?
? ? ? ? 為了定量討論這些問(wèn)題,需要從大量實(shí)戰(zhàn)牌譜出發(fā),抽取每一巡的舍牌,并對(duì)其進(jìn)行統(tǒng)計(jì)分析。為此,筆者爬取了2021年所有四鳳南喰赤的牌譜,提取每一小局的前48張舍牌以及dora信息,并進(jìn)行整合、分析和討論。

三、方法
1.牌譜提取
? ? ? ?天鳳提供了從2006-2021年間、按年區(qū)分的牌譜合計(jì),從https://tenhou.net/sc/raw 即可下載。本文選取2021年的所有鳳凰卓牌譜,并從中篩選出規(guī)則為四鳳南喰赤的對(duì)局,約有18.7萬(wàn)局。
? ? ? ?下載到的牌譜鏈接格式如https://tenhou.net/3/?log=2022120216gm-00e1-0000-98e2fb83&tw=3 。此類(lèi)格式會(huì)自動(dòng)生成常見(jiàn)的動(dòng)態(tài)牌譜而非可文字化處理的牌譜。對(duì)其中某些關(guān)鍵字符進(jìn)行替換后,變成如http://tenhou.net/0/log/?2022120216gm-00e1-0000-98e2fb83 的鏈接,即文字版牌譜。
? ? ? ?對(duì)下載下來(lái)的所有牌譜,批量替換上述關(guān)鍵字符,爬取得到約18.7萬(wàn)個(gè)文字版的四鳳南喰赤牌譜。
2.文字版牌譜解釋
? ? ? ?以上述鏈接中的東一局零本場(chǎng)對(duì)應(yīng)的文字版牌譜“<mjloggm ver="2.3"><SHUFFLE seed="mt19937ar-sha512-n288-base64,1GUPHze3P5…" dan="18,17,17,17" rate="2322.21,2183.54,2299.71,2192.52" sx="M,M,M,M"/><TAIKYOKU oya="0"/><INIT seed="0,0,0,0,4,83" ten="250,250,250,250" oya="0" hai0="39,121,3,112,134,115,107,130,111,59,63,10,22" hai1="104,135,58,44,9,88,61,81,42,57,55,82,132" hai2="109,100,37,26,86,13,106,103,119,12,51,62,46" hai3="43,126,102,21,77,2,73,66,116,85,27,129,11"/><T89/><D121/><U98/><E58/><V78/><F37/><W93/><G116/><T71/><D130/><U99/><E9/><V133/><F119/><W127/><G73/><T35/><D35/><U34/><E34/><V50/><F109/><W122/><G129/><T28/><D39/><U118/><E118/><V36/><F36/><W117/><G117/><T45/><D107/><U49/><E104/><V4/><F133/><N who="1" m="51273" /><E82/><N who="2" m="47447" /><F106/><W97/><G122/><T56/><D10/><U125/><E125/><N who="3" m="47626" /><G66/><T38/><D56/><U41/><E41/><N who="2" m="24911" /><F62/><W29/><G43/><T40/><D40/><U0/><E0/><V75/><F75/><W87/><G77/><T15/><D63/><U30/><E30/><V95/><F4/><AGARI ba="0,0" hai="2,4,11,21,27,29,85,87,93,97,102" m="47626" machi="4" ten="30,3900,0" yaku="18,1,52,2" doraHai="83" who="3" fromWho="2" sc="250,0,250,0,250,-39,250,39" />”為例,進(jìn)行如下解釋?zhuān)?/p>
1)????? 數(shù)字與牌的對(duì)應(yīng)
? ? ? ?整體順序?yàn)?m→9m→1p→9p→1s→9s→1z→7z,即數(shù)字0-3均對(duì)應(yīng)1m,數(shù)字4-7均對(duì)應(yīng)2m,以此類(lèi)推。特別的,16表示0m,52表示0p,88表示0s。
2)????? 版本號(hào)與種子碼
? ? ? ?以“<mjloggm ver="2.3"><SHUFFLE seed=”開(kāi)頭,和研究?jī)?nèi)容無(wú)關(guān),無(wú)視。
3)????? 玩家信息
? ? ? ?“dan=”表示四位玩家的段位,“rate=”表示四位玩家的R值,“sx=”表示四位玩家的性別,無(wú)視。
4)????? 對(duì)局信息
? ? ? ?“INIT seed=”對(duì)應(yīng)單一小局信息,其中例如" INIT seed=0,0,0,0,4,83",第一個(gè)0表示東一局(1表示東二局…11表示西四局,以此類(lèi)推),第二個(gè)0表示供托0根,第三個(gè)0表示0本場(chǎng),第四和第五個(gè)數(shù)字意義不明,第6個(gè)數(shù)字83表示dora指示物,83對(duì)應(yīng)3s,因此本局dora為4s。
“ten=”表示小局開(kāi)始時(shí)四位玩家的持有點(diǎn)數(shù),無(wú)視?!皁ya=”表示本小局的親,0代表東起玩家,1代表南起玩家,以此類(lèi)推,無(wú)視。
5)????? 配牌
? ? ? ?“hai0=”,“hai1=”,“hai2=”,“hai3=”表示四位玩家的配牌信息,無(wú)視。
6)????? 摸牌與打牌
? ? ? ?每一對(duì)尖括號(hào)里的字母+數(shù)字即代表摸牌與打牌。其中,T, U, V, W開(kāi)頭的分別對(duì)應(yīng)東南西北玩家的摸牌,無(wú)視;D, E, F, G開(kāi)頭的分別對(duì)應(yīng)東南西北玩家的打牌,是需要提取的核心信息。這里僅提取前48打,即對(duì)應(yīng)前十二巡的舍牌。
7)????? 鳴牌與立直
? ? ? ?N開(kāi)頭的尖括號(hào)表示鳴牌信息,包括鳴牌人、鳴牌方式、鳴牌后打牌等信息。筆者在處理時(shí)認(rèn)為鳴牌后場(chǎng)況發(fā)生顯著變化,因此所有鳴牌后的打牌不納入研究。
? ? ? ?Reach開(kāi)頭的尖括號(hào)表示立直信息,包括立直玩家、立直后玩家點(diǎn)數(shù)、立直宣言牌等信息。同鳴牌,立直后場(chǎng)況發(fā)生顯著變化,因此立直后的打牌不納入研究。
8)????? 和牌與流局
? ? ? ?AGARI開(kāi)頭的尖括號(hào)表示和牌信息,包括和牌玩家、場(chǎng)供、和了牌型、役種、打點(diǎn)、和了后點(diǎn)數(shù)等信息,無(wú)視。
? ? ? ?RYUUKYOKU開(kāi)頭的尖括號(hào)表示流局信息,包括場(chǎng)供、聽(tīng)牌與否、聽(tīng)牌玩家牌型、流局后點(diǎn)數(shù)等信息,無(wú)視。
3.牌譜處理
? ? ? ?對(duì)約18.7萬(wàn)個(gè)牌譜進(jìn)行處理。
? ? ? ?由于南場(chǎng)通常點(diǎn)數(shù)分布不均勻,會(huì)存在舍牌的偏倚,因此筆者僅納入了東場(chǎng)的數(shù)據(jù)。利用INIT seed對(duì)應(yīng)的單一小局信息,篩選第一個(gè)數(shù)字為0-3的對(duì)局,分別對(duì)應(yīng)東一局、東二局、東三局和東四局。共從約18.7萬(wàn)個(gè)牌譜中提取到約107萬(wàn)個(gè)對(duì)局信息。
? ? ? ?利用INIT seed的最后一個(gè)數(shù)字,存留dora指示物信息,其余信息刪除。
? ? ? ?記錄D, E, F, G開(kāi)頭的尖括號(hào)內(nèi)的數(shù)字,即為對(duì)應(yīng)玩家的舍牌。利用數(shù)字和牌的對(duì)應(yīng)關(guān)系,將數(shù)字轉(zhuǎn)換為牌,并進(jìn)行分類(lèi)統(tǒng)計(jì)。同時(shí),對(duì)每一小局,根據(jù)dora指示物的信息進(jìn)行歸類(lèi),以分析dora相關(guān)的舍牌特征。
4.處理軟件
? ? ? ?信息爬取、大批量的文本處理使用python。
? ? ? ?舍牌的統(tǒng)計(jì)分析使用excel。
? ? ? ?統(tǒng)計(jì)圖繪制使用thinkcell。
5.術(shù)語(yǔ)解釋
? ? ? ?此文的“dora”指第一張表寶牌指示物確定的寶牌,不包括赤寶牌、里寶牌、杠寶牌等。
? ? ? ?此文的“役牌”僅包括白、發(fā)、中三種,不包括自風(fēng)、場(chǎng)風(fēng)。