• 沒有找到結果。

電腦麻將程式ThousandWind的設計與實作

N/A
N/A
Protected

Academic year: 2021

Share "電腦麻將程式ThousandWind的設計與實作"

Copied!
62
0
0

加載中.... (立即查看全文)

全文

(1)國立臺灣師範大學 資訊工程研究所碩士論文 指導教授:林順喜 博士 電腦麻將程式 ThousandWind 的設計與實作 The Design and Implementation of the Mahjong Program ThousandWind. 研究生: 陳新颺 撰 中華民國. 一百零二. 年. 七. 月.

(2) 摘要 電腦麻將程式 ThousandWind 的設計與實作 陳新颺 近年在科技不斷進步之下,人工智慧電腦對局程式也不斷有新的方法或成果 出現,技術方面也越來越成熟,但相對於明確資訊的對局遊戲,不明確且帶有機 率性的對局遊戲程式一直以來都不容易跟人類玩家抗衡,相關算法以及論文討論 也相對上比較少量,因此在這篇論文之中將會討論到關於電腦麻將程式的人工智 慧開發。 這本篇論文中,將會說明電腦麻將程式ThousandWind裡面所使用到的各類算 法,包含如何對牌型做評分、利用遊戲過程的統計結果來做動態的權重調整、避 免放槍的新策略、以及過去論文沒有提到的關於追求牌分的方法,像是一些牌型 比對的策略,以及藉由模擬結果來計算是否該追求更大的牌分。 目前該程式也曾獲得TAAI 2012電腦對局比賽的銀牌,以及TCGA 2013與 ICGA 2013電腦對局比賽的銀牌。也期望論文中所提到的各種方法可以對往後不 僅是電腦麻將程式的開發,甚至是可以帶給其他不明確資訊且帶機率性遊戲一些 啟發。. 關鍵字;人工智慧、電腦麻將、不完全資訊. i.

(3) ABSTRACT The Design and Implementation of the Mahjong Program ThousandWind by Shin-Yang Chen Because of the advances in science and technology, computer games researchers continue to have new methods and achievements in recent years. Technology has also become increasingly mature. But relative to the perfect information games, programs that play imperfect information games have never been easier to compete with human players. There is less paper dealing with the related algorithms. In this thesis, we will discuss the development of computer AI program for playing mahjong. This thesis will explain all the algorithms which have been used in our mahjong program “ThousandWind”. These algorithms include how to evaluate the scores about the hand patterns, how to dynamically adjust the cards' weights during the game process by using the statistical results, how to find new strategies to avoid letting others win, and how to find new ways (e.g. using the hand patterns matching strategy and simulation results) to win more scores. Our program “ThousandWind” has won the silver medal of TAAI 2012 computer game competitions, and the silver medals of TCGA 2013 and ICGA 2013 computer game competitions. We expect that the methods presented in this thesis cannot only be used for the development of computer mahjong programs, but also be used for the imperfect information games with probability in the future.. Keywords: artificial intelligence, mahjong, imperfect information game. ii.

(4) 目錄 摘要.............................................................................................................................................. i ABSTRACT .................................................................................................................................ii 目錄.............................................................................................................................................iii 第一章. 緒論 ........................................................................................................................... 1. 1.1 研究背景......................................................................................................................... 1 1.2 研究目的......................................................................................................................... 3 1.3 論文架構.......................................................................................................................... 9 第二章. 台灣麻將 ................................................................................................................. 10. 2.1 台灣麻將簡介............................................................................................................... 10 2.2 比賽規則簡介............................................................................................................... 11 2.3 相關文獻探討............................................................................................................... 12 2.4 電腦麻將設計方向....................................................................................................... 13 第三章. 程式實作方式 ......................................................................................................... 16. 3.1 牌型分析....................................................................................................................... 16 3.2 動態權重調整................................................................................................................ 24 3.3 避免放槍的機制........................................................................................................... 27 3.4 特殊牌型的比對........................................................................................................... 30 3.5 大牌型的模擬............................................................................................................... 33 第四章. 實驗與成果 ............................................................................................................. 39. 4.1 動態權重調整............................................................................................................... 39 4.2 避免放槍的機制........................................................................................................... 41 第五章. 結論與未來展望 ..................................................................................................... 44. 附錄........................................................................................................................................... 45 參考文獻................................................................................................................................... 55. iii.

(5) 表目錄 表 1-1 電腦對局遊戲的分類............................................ 3 表 1-2. 2012 年 TCGA 比賽結果 ......................................... 6. 表 1-3. 2012 年 TAAI 比賽結果 ......................................... 6. 表 1-4. 2013 年 TCGA 比賽結果 ......................................... 7. 表 1-5. 2013 年 ICGA 比賽結果 ......................................... 7. 表 3-1 搭與組的範例................................................. 16 表 3-2. 牌型分計算範例 ............................................. 22. 表 3-3 預建表的內容說明............................................. 23 表 3-4 預建表的實際情況............................................. 23 表 3-5. TAAI 2012 比賽捨牌取向...................................... 25. 表 3-6 胡牌的平均遊戲巡目........................................... 29 表 3-7 可以用於小牌型比對的牌型..................................... 31 表 3-8 混一色的各巡目與缺牌數的胡牌機率表........................... 36 表 3-9 清一色的各巡目與缺牌數的胡牌機率表........................... 38 表 4-1 TCGA 2013 的比賽結果 ......................................... 40 表 4-2 TAAI 2012 的比賽結果 ......................................... 41 表 4-3 TCGA 2013 的比賽結果 ......................................... 41 表 4-4 採用混一色模擬決策的結果..................................... 42 表 4-5 採用清一色模擬決策的結果..................................... 43. iv.

(6) 圖目錄 圖 1-1 日本麻將天鳳的遊戲畫面........................................ 2 圖 1-2 日本麻將雀龍門的遊戲畫面...................................... 2 圖 1-3 台灣 cyc 麻將平台的遊戲畫面.................................... 2 圖 1-4 電腦麻將比賽時的遊戲畫面...................................... 2 圖 1-5 TAAI2012 比賽銀牌(正面) ....................................... 7 圖 1-6 TAAI2012 比賽銀牌(反面) ....................................... 7 圖 1-7 TCGA2013 比賽銀牌(正面) ....................................... 8 圖 1-8 TCGA2013 比賽銀牌(反面) ....................................... 8 圖 1-9 ICGA2013 比賽銀牌(正面) ....................................... 8 圖 1-10 ICGA2013 比賽銀牌(反面) ...................................... 8 圖 1-11 論文架構..................................................... 9 圖 2-1 程式執行畫面之一............................................. 15 圖 2-2 程式執行畫面之二............................................. 15 圖 3-1 牌型拆解範例 ................................................. 17 圖 3-2 牌型實際搜尋過程............................................. 18 圖 3-3 間接有效牌的分析............................................. 20 圖 3-4. TAAI 2012 比賽中一萬到九萬的捨牌次數 ........................ 25. 圖 3-5 避免放槍的選擇............................................... 27 圖 3-6 放槍的可能組合............................................... 28 圖 3-7 小牌型模組的比對過程......................................... 31 圖 3-8 大牌型模擬的決策過程之一..................................... 33 圖 3-9 大牌型模擬時的決策方式....................................... 34 圖 3-10 大牌型模擬的決策過程之二.................................... 35 圖 3-11 大牌型模擬的真實決策過程.................................... 37 圖 4-1 動態權重調整的成果 .................................................................................................. 39. v.

(7) 第一章 緒論 1.1 研究背景 在人工智慧的研究領域之中,電腦對局一直是一個十分重要的部分。除了各 式對抗類遊戲的人工智慧開發,同時也有各類益智遊戲的解題研究。許多嶄新的 演算法與資料結構也隨著這些研究不斷推出,人類玩家也可以很輕易地找到棋力 相當甚至技高一籌的電腦程式做練習。並且隨著硬體效能與演算法的改良,許多 遊戲的人工智慧已經開始達到了職業玩家的水準,相信未來這樣的趨勢將會越來 越明顯。 電腦對局遊戲大致分為完全資訊與不完全資訊,以及有機率成分及無機率成 分兩種,如表 1-1 所示,依照雙方玩家是否能夠得知場上以及彼此雙方的情報而 決定該遊戲為完全資訊與不完全資訊,如同西洋棋整個棋盤都是公開明朗的,而 陸軍棋雙方的棋子兵種都是隱藏起來的。而機率成分與非機率成分就取決於該遊 戲是否有摻雜著機率的因素來影響遊戲,像是麻將在一開始需要先洗牌,之後才 堆牌後發牌,並且還需要擲骰子決定開門位置,而當然麻將因為不知道其他家的 手牌,因此也屬於一項不完全資訊的遊戲。 麻將被列為中國的國粹之一,其歷史也是相當的悠久,同時這樣的文化也傳 播到其他地方並且隨當地改變規則,諸如香港、台灣、日本各個地區都自行發展 出獨有的麻將規則,雖然許多人認為麻將是運氣性很高的賭博類遊戲,但其實還 是有相當的技巧在裡面,目前也有許多線上的麻將對弈平台(如圖 1-1 至 1-4 所示), 各國也會舉辦相關的比賽,可以看出人們對於麻將是有多麼的熱衷。. 1.

(8) 圖 1-1 日本麻將天鳳的遊戲畫面. 圖 1-2 日本麻將雀龍門的遊戲畫面. 圖 1-3 台灣 cyc 麻將平台的遊戲畫面. 圖 1-4 電腦麻將比賽時的遊戲畫面. 麻將屬於不完全資訊遊戲,也就是遊戲中許多因素是未知的,這類型的遊戲 還有像是撲克牌、暗棋、陸軍棋等等,因為檯面上的情報雙方都無法完全掌握, 只能從遊戲過程中慢慢得知,同時麻將本身就有運氣成分在裡面,因此這樣的遊 戲類型就會變得需要以機率為基礎來做搜尋。目前台灣電腦對局學會(TCGA: Taiwan Computer Game Association)以及中華民國人工智慧學會 (TAAI:Taiwanese Association for Artificial Intelligence) 也都將麻將列為正式的比賽項目之一了。. 2.

(9) 無機率成份. 有機率成份. 完全資訊賽局. 不完全資訊賽局. 西洋棋. 戰艦遊戲. 圍棋. 陸軍棋. 西洋雙陸棋. 撲克. 大富翁. 麻將. 表 1-1 電腦對局遊戲的分類. 1.2 研究目的 各個國家的麻將都有屬於自己的規則,相對於其他國家來說,台灣的麻將規 則是相對上較簡單的,幾乎大部分的台灣人都略知一二,但說得上是擅長的人卻 不多,也是因為規則簡易,變成很難產生簡單有效的統一策略,特別是台灣麻將 因為攻擊方沒有太多限制,所以變成防守方因為沒有線索可循,使得這方面的決 策變得十分難以設計,因此雖然說麻將是有運氣性的遊戲,但其實裡面還是有非 常多的策略在裡面。 目前有關於台灣麻將的研究並不算多,一方面可能是因為它是一款不明確資 訊的遊戲,同時它的過程也與大部分的對弈遊戲不太相同,因為其他玩家的資訊 一直都是隱藏起來的,使得搜尋上要考慮其他玩家變成十分困難,同時遊戲無法 預期什麼時間點會結束,不像棋類遊戲或牌類遊戲大多有固定的終盤過程,這些 不穩定的因素使得麻將的電腦程式距離人類玩家一直有個差距。. 3.

(10) 我們的目的就是設法對麻將做更深入的研究,嘗試開發出一套具有一定水準 的電腦程式,解決現存麻將各種需要探討的問題,以及藉由各類型的實驗,來比 較不同演算法的成效,並整理出一些不只是對於麻將程式,甚至是一些機率性遊 戲或者是一般博弈類程式都可以參考的方法,藉此讓有意踏入這個領域的人可以 更輕易的理解相關的演算法,並且納為己用,繼續開發更加聰明的程式。 麻將在整個遊戲過程之中,我們幾乎都對其他玩家一無所知。在暗棋遊戲之 中,雙方互相不知道對方資訊,同時也不知道己方的暗子,而遊戲過程中顯露出 來的情報都是雙方都可得,在過去也有許多相關的論文,像是[7]「電腦暗棋之人 工智慧改良」,在該論文中對於暗棋翻子的問題提出了「安全分」的計算,並且 也在棋種配分上採用動態調分的概念。而在橋牌遊戲中,我們可以藉由喊牌來得 知對家的大致牌型,進而推測出對方的牌型,雖然不知道分布情況但至少獲得了 某種程度上的情報,而其相關的論文有[5]「非完全資訊賽局-蜜月橋牌之研究」, 該研究是針對機率性更重的兩人橋牌遊戲,從喊牌、換牌到打牌都有提出些作法, 另外還有[15]「Computer bridge: A big win for AI planning」,該論文則是討論機率 成分較低的四人橋牌,利用分層搜尋來找出最佳策略。但是在麻將遊戲之中,遊 戲過程之中我們始終不知道對方有什麼牌,唯一有的情報就是對方不需要那些牌, 在僅僅只有這些情報的輔助下,要針對其他玩家而做出相對應的決策是很困難的。 在這裡我們將利用一些統計的理論以及動態權重調整的方式來處理這些未知的 情報,藉此做出有效的決策。 麻將遊戲還有一個與其他博奕遊戲差距很大的設計,就是台數這樣算分的存 在,在大部分的博奕遊戲中,結果都是只有勝與敗兩種情況,但麻將同樣是贏, 4.

(11) 也會有贏多贏少的差別。在橋牌類遊戲中,我們利用一些經驗統計來決定喊牌時 的大小,這是在一開始就決定的,但麻將遊戲卻是在過程之中不斷的在選擇是否 要嘗試提高台數的打法,又或者是想要提高台數又該怎麼打。. 基於以上種種問題,使得麻將的演算方法跟常見的遊戲都不太一樣,它不只 是一款隱藏資訊的遊戲,更是一個不只是要贏,更要贏得多的遊戲,如何找出一 個好的取捨平衡點就是需要探討的問題。而對於這些種種的難題,在本研究中都 將個別去一一檢視,提出各種方法來處理每一個問題,嘗試對於這樣的遊戲提出 一套高效率的解決方法。 而本程式 ThousandWind 的名稱緣由,來自於某麻將作品之中,該作品將「大 四喜」這個牌型稱作 ThousandWind,「大四喜」在麻將遊戲中是非常高分數且少 見的牌型,因此取了這名稱以期望未來程式有機會能夠胡到此牌型。 目前程式也參加過許多次麻將的電腦對局比賽,最早為 TCGA 2012(Taiwan Computer Game Association)的比賽,當時程式完成了一部分簡單的實作,雖然表 現並不稱的上優異,但也獲得了銅牌的榮耀(請看表 1-2 的比賽結果)。 而接下來是隔了幾個月後的 TAAI 2012(Taiwanese Association for Artificial Intelligence)比賽,在當時已將基本捨牌策略(見論文 3.1 節)、動態權重調整(見論 文 3.2 節)、以及避免放槍的機制(見論文 3.3 節)完成,表現也比過去好上很多, 最後也獲得銀牌的成績(請看表 1-3 的比賽結果)。 再來是 TCGA 2013 的比賽,除了改良了之前所寫的那些功能,以及修正一些. 5.

(12) 問題之外,也補上了小牌型的比對(見論文 3.4 節)與大牌型的模擬(見論文 3.5 節), 但是因一些設定上的失誤,使得程式在前半段表現不佳,直到後半段回歸正常後 才急起直追,雖然最後成果還是銀牌(請看表 1-4 的比賽結果),但若只看後半段 的表現的話,我們的程式是足以與第一名的「LongCat」一搏的。 而在 ICGA2013 的比賽中,我的程式雖在最後以微小差距與第一名失之交臂, 但在中間過程中,可說是與「LongCat」互有往來,但在比賽中仍可見到程式有 出現些預料之外捨牌,之後應該還是有可以再改良的部分。. Rank. Program. Title. 1 LongCat. TWN. Gold medal. 2 MAJO. TWN. Silver medal. 3 ThousandWind. TWN. Bronze medal. 4 GrandSlam. TWN. 表 1-2. Rank. Country. 2012 年 TCGA 比賽結果. Program. Country. Title. 1 LongCat. TWN. Gold medal. 2 ThousandWind. TWN. Silver medal. 3 MAJO. TWN. Bronze medal. 4 GrandSlam. TWN. 表 1-3 2012 年 TAAI 比賽結果 6.

(13) Rank. Program. Title. 1 LongCat. TWN. Gold medal. 2 ThousandWind. TWN. Silver medal. 3 MAJO. TWN. Bronze medal. 4 GrandSlam. TWN. 表 1-4. Rank. Country. 2013 年 TCGA 比賽結果. Program. Country. Title. 1 LongCat. TWN. Gold medal. 2 ThousandWind. TWN. Silver medal. 3 MAJO. TWN. Bronze medal. 4 GrandSlam. TWN. 表 1-5 2013 年 ICGA 比賽結果. 圖 1-5 TAAI2012 比賽銀牌(正面) 7. 圖 1-6 TAAI2012 比賽銀牌(反面).

(14) 圖 1-7 TCGA2013 比賽銀牌(正面). 圖 1-8 TCGA2013 比賽銀牌(反面). 圖 1-9 ICGA2013 比賽銀牌(正面). 圖 1-10 ICGA2013 比賽銀牌(反面). 8.

(15) 1.3 論文架構 本論文共分為五個章節,第一章會介紹電腦麻將的背景知識、研究動機與目 的,以及目前的比賽狀況。第二章則是台灣麻將本身的介紹,以及過去的一些研 究成果與探討,並稍微提及本程式目前的狀況。第三章則是介紹 ThousandWind 程式中所用到的各種技術,包含有像是捨牌基本決策、動態權重調整、避免放槍 的機制、小牌型的比對、以及大牌型的模擬。第四張會報告實驗的結果,包含比 賽的紀錄或是自己程式的內部測試。第五章則是結論以及未來發展的討論。整體 架構如下圖所示。. 第一章. 研究動機與目的. 第二章. 麻將簡介與文獻探討. 第三章 基本決策. 動態權重. 第四章. 第五章. 避免放槍. 實驗結果. 小牌型比對. 比賽分析. 結論與未來發展. 圖 1-11 論文架構. 構 9. 大牌型模擬.

(16) 第二章. 台灣麻將. 2.1 台灣麻將簡介 台灣麻將為十六張的麻將遊戲,比起香港或是日本的十三張來說更多了 3 張, 雖然乍看之下因為張數較多所以使得胡牌較難,但是日本麻將因為有著沒有台數 就不能胡牌的規則,所以反而是台灣麻將在遊戲進行上較沒太多限制,台數的計 算也很單純。當然也如同其他國家的麻將一樣是四人的遊戲,每名玩家都會當到 莊家,同時遊戲也會進行複數場次才會結束,而非是以一場玩單位在打,通常會 打所謂的一將,也就是十六局的對戰。 遊戲進行時會使用萬筒條各有一到九,以及四種風牌與三種三元牌,所有的 牌共四張,總共 136 張牌,最後再加上八張花牌形成 144 張牌的遊戲。起始在充 分洗牌後,發給每一家起始的 16 張牌,並在替換掉花牌後(俗稱補牌),由首家摸 進第一張牌來正式開始遊戲。 玩家每一巡目都會從牌堆中摸牌,接著從手中打出一張不要的牌。當有一名 玩家湊到五組加一對眼時,就宣告遊戲結束,也就是該家胡牌或自摸。所謂的一 組牌包含了三張相同的「刻」 ,像是「一萬、一萬、一萬」 ,或是三張連續的「順」, 像是「一萬、二萬、三萬」,以及四張相同的「槓」,而「眼」指的是兩張相同的 牌,玩家除了自己摸到一組的牌外,當有其他玩家打出的牌可以讓你形成「刻」 或「槓」,或者是上家打出的牌可以讓你形成「順」時,你就可以進行「碰」或 「吃」或「槓」的動作,目標就是比其他人早一步完成胡牌的條件。. 10.

(17) 2.2 比賽規則簡介 目前 TCGA、ICGA、TAAI 的麻將比賽都採用相同的規則,基本的規則是採 用台灣麻將,也就是十六張的麻將遊戲,比賽中使用的牌為除了花牌以外的 136 張牌,且沒有連莊的設定,只要有任一位玩家胡牌或是該局無人胡牌,即會進入 到下一局。分數的採計為基本底 1000 分,每一台則再加算 500 分,自摸則是收 三家的分數,放槍則是一對一賠分,有算莊家一台。比賽場次會依當天時間做調 整,以 96 局為一個單位做計算,若時間允許的話通常會進行兩個單位也就是 192 局的對戰,而 96 局的來源則是因為要讓四位玩家對於互相的順序都有排到,彼 此都會當過任一家的上家與下家等等,因此有四位玩家就會產生六種座位排法, 並且麻將一次對戰都會進行所謂的「一將」,也就是十六局的比賽,所以最後就 會得出 6 乘上 16 等於 96 局。並且為求公平,玩家都會輪流拿到相同的起始手牌。 牌型的台數分數則可參考附錄 6-各牌型台數表。比賽最後的結果即是計算全部場 次的總分。. 11.

(18) 2.3 相關文獻探討 國內麻將的相關論文最早是「電腦麻將演算法及相關議題之研究」[1],於 2007 年由國立台灣師範大學資訊工程學系的莊凱閔、陳玥汝所撰。在當時此論文所設 計出的麻將程式 MAJO 已經是非常強的,不過因為當時並沒有相關比賽,因此沒 有太多實驗測試其牌力。 其中主要的想法是利用 Divide and Conquer 對整副牌用花色來做拆解,之後 對於每一種花色中的每一組、搭以及孤張,藉由候選人權值、剩下張數、欲拿到 的張數等等資訊來計算出該組合的分數,進而導出一組勝率公式,利用這個公式 就可以分析出對於每一張捨牌會得到的分數,藉此來選擇出最適合的捨牌。對於 每一種花色做牌型分析時,則是展開搜尋樹利用 Backtracking 做各種組合並套用 勝率公式,找出最適合的組合。 在隔年 2008 年則出現了另一篇「麻將人工智慧之研究」 ,作者是國立交通大 學資訊工程所的林典餘所撰,其開發的程式為 LongCat,對於捨牌的原則與前篇 很相似,都是利用搜尋樹做牌型拆解,但是會先將所有牌型的資訊預先計算完成 並儲存起來,紀錄該組合總共缺那些牌,事後只需要從資料庫中找出該筆資訊就 可以直接做評分的動作。同時也嘗試在遊戲末盤做放槍避免的動作,藉由蒙地卡 羅法來預測打出哪一張相對上會比較安全,來減少自己放槍的機會。. 12.

(19) 2.4 電腦麻將設計方向 麻將設計方向大約可分為三個部分,第一個是捨牌的決策,第二個是避免放 槍的決策,第三個是胡到特殊牌型的方法。 以捨牌來說,對於 MAJO 及 LongCat 兩支程式,採用的捨牌方針可以說是十 分類似,或者可以說麻將對於基本捨牌的選擇,也就是在不考量到台數或者是放 槍等問題時,這時所需求的就是選擇期望值最高的捨牌,而計算方式就是可以等 到最多牌的牌型,因此前篇[1]的 MAJO 程式藉由獨特的勝率公式,會同時考慮到 立即有效的進牌以及間接有效的進牌,而另一篇[2]的 LongCat 則預先算出最佳牌 型以及需要的牌跟類型,然後在執行中從資料庫找出來直接計算分數,這些策略 方式都已經很接近現在真實玩家的捨牌方式。不過這些程式在做決策時,都是沒 有考慮其他家的情況,都是假設其他家的捨牌就如同自己摸牌一樣,雖然因為麻 將是充滿機率性的遊戲,因此可以假設所有的牌出現機率會是一樣的,但現實中 玩家在打牌時,都會時常去注意其他家的捨牌,因為這些資訊都會影響到自己該 捨那些牌。 再來對於電腦程式來說,要做到避免放槍這個動作是十分困難的,原因是因 為這通常是要長久的經驗累積下來,對於真實玩家來說就已經很難做到了,特別 是在台灣麻將的規則之中,並不像日本麻將很容易藉由其他家捨牌來縮小可能範 圍,因為日本麻將有許多利於防守的規則。交大的 LongCat 程式中,是使用模擬 的方式來做閃躲的動作,它會猜測別人有可能聽的牌,然後模擬各種捨牌看哪張 的結果會較好。也就是首先從所有還沒出現的牌中,幫對手組出一副快要聽牌或 者已經聽牌的牌型,接著對於每一張捨牌去統計之後的胡牌狀況,在丟出去某張 13.

(20) 牌後是否會導致於別人吃碰,甚至是放槍,以及這個時間點我方胡牌的機會大不 大,適不適合繼續做危險的嘗試以求胡牌,同時會考量到自己是否還有胡牌的機 會,若已經到後半段但自己距離胡牌還有一段距離時則會保守出牌,反之就不會 啟動這樣的模擬,根據他們的論文數據顯示,有做這樣功能的程式確實可以降低 放槍的機會。 麻將除了捨牌以及避免放槍這兩項重點外,還有一個很重要的一點就是台數 的追求,麻將遊戲之中,同樣是胡牌但是取得的分數是有可能差很多的,當完成 了特定的牌型可以使得你獲得的分數更高,也就是就算大家胡牌的次數相當,只 要獲得的台數多,就更有機會贏得勝利,但這部分也是十分困難的部分。麻將遊 戲中會加台數的牌型,大概可以分為運氣型、小模組、整副模組三種,運氣型並 沒有辦法刻意去完成,通常指的是剛剛好達到某些條件,但那些條件可能與你的 牌型無關,所以這方面不需要考慮。小模組則是少數幾張組成的特別組合,而整 副模組就是胡牌時整副牌剛好符合特定規則,因為前面兩篇論文採用的捨牌原則 都是考慮當下的牌型,同時也只考慮最佳的進牌機率,所以都很難完成這些模組, 但若要嘗試組成這些模組則可能需要完整的搜尋到遊戲結束,而且目前這些模組 約有近 30 種,若要每一種都搜尋是很花時間的,因此這樣看來麻將程式還是有 很多可以再研究的地方。 下圖 2-1 與圖 2-2 為我的程式執行的畫面,可設定為電腦自動對下或者是由 玩家來做操控,並且會列出各種資訊以方便之後除錯,包含會記錄該局盤面,當 發現程式做出有問題的選擇時,可以重讀盤面資訊來做分析除錯,若需大量測式 或統計資料也可以將顯示模式關閉,各玩家也能夠各自設定需要的決策方式。. 14.

(21) 圖 2-1 程式執行畫面之一. 圖 2-2 程式執行畫面之二. 15.

(22) 第三章. 程式實作方式. 以往的程式大多著重於基本捨牌策略的設計,以最快速度的胡牌來達到較高 的勝率,以及降低其他家的胡牌次數,對於增加台數以及避免放槍這塊領域的研 究較少。這裡我們除了將再對捨牌策略做調整,同時會去考慮其他玩家的捨牌, 進而修正自己的決策權重,並且嘗試加入台數的考量,以及一些簡易的放槍避免, 讓程式能夠有更好的打牌技巧。. 3.1 牌型分析 捨棄一張牌使得接下來可以等待的牌為最多,這是求最快胡牌的捨牌基本原 則,在這裡所使用的方式類似於交大那篇論文[2]的作法,我們會預先算出各牌型 的基本分數跟它需要那些牌及其類型並建表,接著在做決策時就從表中取得想要 的資訊。舉例來說,假如我們手上有二萬跟三萬,那麼在查表後就會得到這牌型 含有一個搭子,並且缺少一萬或四萬,同時一萬跟四萬都是要拿來做吃的動作。. 搭. 組. 表 3-1 搭與組的範例. 16.

(23) 一組. 一搭. 一搭. 孤張. 一組. (略). 孤張. 最佳為一組與一搭 對各類搭子有用的牌為. 圖 3-1 牌型拆解範例. 17.

(24) 以上圖例子來說,{二筒、三筒、四筒、五筒、六筒}可以先拆解成{(組)二筒、 三筒、四筒}的組,剩餘的則可以選擇{(搭)五筒、六筒},或者是單獨的{(孤)五筒} 與{(孤)六筒},但是我們在拆解上會希望增加組與搭的數量,因此會選擇前者, 最後需要的牌就是{四筒、七筒},而這只是一種拆解法,我們需要再考慮其他的 可能性。如此再搜尋下去又可以發現可以拆成{(搭)二筒、三筒}與{(組)四筒、五 筒、六筒},這種拆解法同樣會有一組以及一搭,而他所需要的牌是{一筒、四筒}, 最後與之前的結果做聯集,就會得出最後需要的牌總共有{一筒、四筒、七筒}共 三張。 並且為了加速建表,在搜尋建表過程中會採用動態規劃,也就是實際上當我 們將{二筒、三筒、四筒、五筒、六筒}先拆出{(組)二筒、三筒、四筒}後,剩餘{五 筒、六筒}時,不會再繼續分析下去,而是會直接從以前的搜尋結果中取得{五筒、 六筒}的最佳可能性,如此一來就可以節省大量的搜尋時間,如圖 3-2 所示。. 一組. 查閱之前的搜尋成果. 圖 3-2 牌型實際搜尋過程. 18.

(25) 對於每一組牌型,我們所存有的資訊包含該牌型的組數跟搭數,以及還需要 那些牌,而那些需要的牌中,會再紀錄其需要的類型,像是它是用來做吃還是碰, 或者是可以當作眼牌,又或者是間接有效的牌。而所謂間接有效的牌指的是當我 們擁有了這張牌後,可能是可以讓我們搭子數增加的牌,或者是進了此牌後我們 就可以有更多的吃碰牌機會。 舉例來說如果我們擁有四萬跟六萬,那麼因為來五萬我們可以做吃的動作, 所以五萬就是一張需要的牌,並且它的屬性是「吃」 ,除了我們希望來五萬之外, 如果來了四萬,雖然我們的牌型組搭數不會變,但是會因此讓我們之後可以碰四 萬,因此四萬也是一張我們需要的牌,並且屬性為「間接」 。同理六萬也是如此, 而三萬跟七萬也是一樣的情況,因為如果進了三萬,那麼我們就多了一張二萬可 以吃,藉由這些需求張跟其屬性,我們就可以計算該牌型的分數。 利用這樣間接有效的牌,就可以使得我們在捨牌時不只是可以越來越接近胡 牌,同時也可以讓之後更容易進我們想要的牌,也就是不只是希望可以在這個巡 目留下比較好的牌型,更是希望讓往後的巡目也可以有更好的選擇,如圖 3-3 所 示。 而在這樣計算之下也會很容易產生大量的牌都是間接的有效牌,也因此權重 的調整就會更加的重要。. 19.

(26) 最佳為一搭 對各類搭子有用的牌為. 若拿到一張. 最佳為二搭 對各類搭子有用的牌為. 屬於. 的間接有效牌. 圖 3-3 間接有效牌的分析 20.

(27) 而牌型分的計算就是將所有需要的牌乘上它的類型分再乘上剩餘的張數,類 型分取決於該牌到手的方式,吃牌我們可以吃上家,也可以自己摸到,但碰牌除 了自己摸到外,不管哪一家打出都可以碰,所以碰的類型分會比較高,而間接類 型或者是眼牌就一定只能自己來摸,所以他們分數就會最低。 當計算牌型分時,間接牌佔的數量非常的多,只算手上只有四萬跟六萬兩張 牌,間接牌就多達三萬、四萬、六萬、七萬共四張,若手上某一色的牌有五張左 右,很容易變成所有的牌都是間接有效的牌,因此雖然間接牌只能用摸來的,而 吃牌可以是自己摸與上家打出這兩種方式,但是分數也不會設定為一比二,因為 不希望每次打牌時都太受間接牌影響,這樣反而會拖慢胡牌速度,因為最終我們 是要完成一組牌,而不是一副可以等非常多牌的牌型,所以比重目前設為一比五。 而最後也會再乘上一個牌的權重,部分字牌的權重會較高,因為字牌是有台數的, 目前各參數的設定是作了簡單測試過後的結果,未來有可能會再作調整的動作。 而表 3-2 則是一個牌型分的試算例子。 可以看到說當我們有兩張四萬跟一張六萬時,如果再來一張四萬我們就可以 碰,因此四萬是屬於直接有效牌,且屬性為「碰」,假如外面還剩下一張,那麼 四萬的分數就是 1*10=10,後面的權重會在之後 3.2 節的內容做說明。以此類推, 而三萬就是屬於間接有效牌,當我們拿到三萬之後,雖然沒有跟任何的牌形成一 組,但是會因此與四萬形成一搭,而使得只要再來一張兩萬就可以形成順,因此 假如外面還有三張三萬,而間接有效牌的牌型分只有 1 分,所以該牌的分數就是 3*1=3。. 21.

(28) 需要的牌. 剩餘張數. 牌型分. 權重. 該牌得分. 4. 1(間接). 1. 4*1*1=4. 3. 1(間接). 1. 3*1*1=3. 1. 10(碰牌). 1. 1*10*1=10. 3. 5(吃牌). 1. 3*5*1=15. 1. 1(間接). 1. 1*1*1=1. 2. 1(間接). 1. 2*1*1=2. 2. 1(間接). 1. 2*1*1=2. 總分:4+3+10+15+1+2+2=37 表 3-2. 牌型分計算範例. 22.

(29) 而預建表中的內容則如下表 3-3 所示,最左邊三個數字代表的是這個牌型的 組數搭數以及有效牌數,至於是什麼牌型就是用從後面來累加的做計算,第一個 讀取到的牌型就是沒有任一張,下一個牌型就是有一張九萬,再下一個也就是第 三行就是兩張九萬,第六行就會是一張八萬。接下來的數字則是代表需要的牌以 及他的需求類型,以一張九萬來說,它的組搭數為零,有效牌有三張,因此最前 面是{0 0 3},接下來它的有效牌共有{7 8 9}三個,有效牌類型都是間接有效牌, 就會寫成{7 4 8 4 9 4},其中 4 代表的就是間接有效牌的意思。而「非眼牌的情況」 代表是說我們認為這副牌沒有眼牌或者沒有適合當眼牌的牌存在。. 而為了減少檔案大小,實際儲存時都盡量減少空格,如下表 3-4 所示。. 非眼牌 的情況. 需求類型. 眼牌的 情況. 需求類型. 009. 142434445464748494 142434445464748493. 沒有牌. 000. 一張 9 萬. 003. 748494. 019. 兩張 9 萬. 013. 748492. 100. 表 3-3 預建表的內容說明. 000009142434445464748494 003748494019142434445464748493 013748492100 100109142434445464748494 1027484119142434445464748492 00464748494019142434445464748394 013718494019142434445464718393 …… 表 3-4 預建表的實際情況 23.

(30) 3.2 動態權重調整 如同前面所說的,大部分的麻將程式在決定該捨棄哪張牌時,所依據的就是 當捨棄那張牌後,能夠使得我們可以等的牌會最多。因為麻將是一個不完全資訊 且富含機率的遊戲,所以我們通常會假定所有的牌出現的機會是均等的,以摸牌 來說這樣的考量是很正確的,就算有些牌已經在別人手上因此是不會被我們摸到, 但因為不確定別人是什麼牌,因此就假定沒出現的牌都有可能摸到,且因為牌堆 一開始就設定好,所以每一張牌大致上可以視為相等的機率分布。但是真實情況 中別人的捨牌其實並非如此,因為其他玩家的捨牌包含了他的決策,他並不是隨 意打一張出來,而是打出對他有利的一張牌,因此這就會使得每張牌出現的機率 不均等。簡單的舉例來說,如果為了要讓自己快速胡牌,通常會優先打出字牌, 再來是邊張牌,最後才是中間牌,並且打牌中通常會包含自己的習慣,像是萬筒 條會優先捨棄哪一張等等,因此就可以利用統計的方式得出那些牌是比較常出現 的,並且這個動作是可以在遊戲過程中來執行,也就是隨著我們逐漸知道別人的 捨牌取向,我們就可以找出更正確的捨牌。舉例來表 3-5 就是 TAAI 2012 比賽時 其他家的捨牌取向。其中數字表示那張牌被捨棄的總次數。. 24.

(31) 數字 一. 二. 三. 四. 五. 六. 七. 八. 九. 196. 114. 105. 58. 56. 134. 73. 88. 186. 119. 98. 92. 59. 30. 91. 104. 47. 163. 78. 93. 67. 52. 77. 64. 82. 111. 114. 東. 南. 西. 北. 中. 發. 白. 286. 190. 266. 285. 214. 306. 193. 8. 9. 花色. 萬. 筒. 條. 字牌. 表 3-5. TAAI 2012 比賽捨牌取向. 200 150 出 現 100 次 數 50 0 1. 2. 3. 4. 5. 6. 7. 一萬至九萬. 圖 3-4. TAAI 2012 比賽中一萬到九萬的捨牌次數. 25.

(32) 從這裡可以發現若看萬子的部分(如圖 3-4 所示),其他玩家打出一萬的機率 將近是五萬的四倍,同時其他玩家比較傾向從萬子開始捨牌,而有了這樣的資訊, 我們就可以做出更準確的判斷,並且這些統計都是在遊戲過程中動態做蒐集,因 此無論是對到什麼樣的對手都可以做此統計,若對方有在遊戲中調整策略我們也 可以自動把權重更新回來進而應對。 而中間有些像是六萬或是七條有出現偏高的情況,這邊推論有可能是統計次 數不夠多所導致,或者是其他程式真的有某些決策方式使得他們會有這樣的傾向, 但無論如何都可以發現捨牌大約呈現一條向下凹的曲線,而根據一些專家所寫的 麻將相關書籍,也都有提到說其實等邊張牌的效果是很不錯的。 再者,我們可以再將統計細分為各家結果,也就是記錄每一家的捨牌傾向。 對於「吃」的牌來說,我們只能自己摸到或者是上家打出,而對於「碰」的牌來 說,則是四家都可以,因此若我們得知了上家的打牌特性,就可以更準確等到我 們想「吃」的牌,這方式在各家打牌習慣有明顯差異時就可以起到充足的作用, 例如前項統計結果顯示萬子的出現率較高,但若現在有另一家較容易打筒子,而 他處於我們上家時,我們就可以將我們想「吃」的牌朝向筒子方向做發展,藉此 就可以提高進牌的機率。. 26.

(33) 3.3 避免放槍的機制 在麻將遊戲中,如何讓自己快速胡牌固然是很重要的,但是若在胡牌之前就 放槍給別人的話就什麼都沒有了,因此如何避免放槍就是一件很重要的課題。交 大的論文中使用了模擬的方式來猜測別人的手牌[2],而我們則將這樣的想法簡化, 變成直接推算哪張牌會比較容易胡牌,也就是哪一張牌它能碰到的組合越多則代 表該牌越有可能被胡牌。 舉例來說,若我們現在擁有一張二萬想丟出,二萬可以被「三萬、四萬」吃, 或者是被「一萬、三萬」吃,也可能被「二萬、二萬」碰,當然單張「二萬」也 可以胡來當眼牌。最後就計算上面那些組合目前的剩餘張數來得到說該牌會有多 高的機會被胡走。而這樣的機率變成一個相對上的機率,我們會對所有的牌都做 這樣的計算,就可以選出一個相對上有較少可以搭配的牌作為捨牌的選擇。. 可能的選擇. 未出現的牌 因可搭的牌張較少 故選此項. 圖 3-5 避免放槍的選擇 27.

(34) 同時如同前人的做法一樣,我們並不會一直使用這樣的機制,而是到特定巡 目時,若我們依然離胡牌有著一段距離時,就採用這樣的方法來輔助捨牌,藉此 減少放槍的機率。但就算是採用了此機制,也不會是每一張牌都納入選擇,而是 從孤張也就是不拆散組搭的情況下做選擇,目的是不希望完全放棄胡牌的可能。. 對於一張牌需要考慮的組合. 圖 3-6 放槍的可能組合. 28.

(35) 表 3-6 為以自己程式自動對下的結果,可以發現大部分約在剩餘 40 張牌時, 也就是遊戲進行了約八巡目,同時約有 80%的場次會在剩餘 32 張牌前結束,也 就是大部分遊戲在經過 10 巡目後就會結束,因此程式就可以設定成在 10 巡目之 後若是認為目前不容易胡牌,則選擇採取較保守的方式做打牌。 同時也有測試過在更早的巡目就採用此策略,但發現若這麼做會大幅降低胡 牌的機率,並且做到的避免放槍效果無法彌補失去的部分,在經過測試後認為這 個時間點應該較適宜的巡目。. 18000 16000 14000 12000. 場 10000 次 數 8000 目 6000 4000 2000 0 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69. 胡牌時剩餘張數 表 3-6 胡牌的平均遊戲巡目. 29.

(36) 3.4 特殊牌型的比對 麻將遊戲中,如果想要獲得更多的分數除了增加胡牌的機率外,另一條路徑 就是增加每次胡牌時的台數,為了得到高台數,就需要讓胡牌時的牌符合特定的 牌型。小牌型模組因為只需要少數幾張就可以完成,所以是比較容易做考量的。 而這裡使用的方法就是在每次要做決策之前,先去檢查手牌中是否已有存在 的小牌型模組,若有的話則將該牌固定起來,也就是設定為不會打出去的牌,當 做完所有的模組比對後,再藉由一般的決策方式選擇捨牌,這麼一來就可以確保 最後在胡牌時能夠獲得該模組台數,同時因為是看到才做保留的情況,所以這方 法也不會拖慢我們胡牌的速度,因為這方法並不會刻意想完成那些模組,而是在 那些模組剛好發生時才做保留的動作。 舉例來說,有一種台數被稱作「雙龍抱」,它的達成條件是擁有兩組一模一 樣的順子,像是同時持有兩組「一筒、二筒、三筒」 。而如同圖 3-7 所顯示,使用 此方法的好處就可以避免程式將此牌型拆散。 而其他的牌型像是「一條龍」 ,或是日本稱之「一氣通貫」 ,就是擁有某一種 花色的一到九,確切來說是擁有「一、二、三」的「順」 、 「四、五、六」的「順」、 「七、八、九」的「順」,對於這類的牌型我們也是可以採用此作法。. 30.

(37) 通常的捨牌. 可能將一筒打出,拆散此模組 捨牌. 將四筒打出, 先做模組比對. 沒拆散此模組 發現符合雙龍抱,將關鍵牌隔離出來 圖 3-7 小牌型模組的比對過程 牌隔離出來 適用於保留的特殊牌型 三暗刻 四暗刻 五暗刻 雙龍抱 一條龍 三色同刻 三色同順 三槓子 表 3-7 可以用於小牌型比對的牌型. 31.

(38) 廣義來說,包含像是大四喜這類的牌都可以採取此做法,但是這類大牌型自 然出現的機率較低,同時比較容易被意外拆散的都是以「順」為主,「刻」在正 常打牌時其實不太容易會動到,因此這機制主要的對象還是像「雙龍抱」這類以 「順」為主體的牌型,同時測試的結果也發現若是採用此方式,能胡到此牌型的 機率大約是原來的一倍左右,因此效果是很不錯的。 並且這類方式在往後不管是增加新的台數種類,或者是換成其他地方的規則, 都可以很容易的增加比對牌型或是修改,並且對於不需要的也只要個別去取消即 可。 同時往後也可以採取說不只是完全相同就作保留的動作,可以達到一定程度 的相同就將該牌設定為較不容易打出的牌,這樣一來對於一些不容易出現的牌型, 或許就可以有效增加胡到該牌型的機會。例如當我們已經擁有「一萬、二萬、三 萬」以及「一條、二條、三條」時,若手中還有「一筒、二筒」,甚至是只有單 張「一筒」 ,我們都可以將該牌設定成較不容易打出,進而嘗試胡到「三色同順」 的特殊牌型。表 3-7 列出可以用於小牌型比對的牌型。. 32.

(39) 3.5 大牌型的模擬 大牌型因為不太會自然形成,所以不適合像小牌型一樣用比對保留的方式, 因此考慮的是採用模擬的方式,模擬說如果我們想完成某特定牌型時,成功的機 會有多少。舉例來說我們若我們想完成萬子清一色,那們就模擬說在遊戲結束前, 我們朝向這方向打牌,也就是只留萬子的情況,會有多少機會胡牌,然後再模擬 正常打牌的情況的機率,互相比較後決定是否要這麼做,如圖 3-8 所示。這個方 法的好處就是不管是哪一種大牌型的模擬都可以用這樣的方法來執行,而且每一 巡目都可以重新作考量,而壞處也是一樣,不管是哪一種牌型,想要知道都要單 獨模擬過一次,而為了要增加準確度,模擬次數也要足夠多,因此就會有計算時 間上的問題,目前比賽規定皆為三秒內出手,要在短時間做大量的模擬是很有難 度的。. 模擬勝率. 模擬正常 方式打牌. 比較勝率. 認為有機會 完成混一色. 若勝率沒有相差太大則 選擇以混一色為目標 模擬以混一色 為目的來打牌. 圖 3-8 大牌型模擬的決策過程之一 33.

(40) 而為了避免掉時間上的問題,考量到比賽當時每一手的時間很短,無法讓我 們有充足的時間做立即的模擬,因此則改採用預先模擬的方式,預先統計好在不 同手牌好壞的情況以及不同的時間點,我們能夠胡牌的機率是多少,並且在這裡 設定為必須是要在 10 巡目以內胡牌,因為在之前的統計結果顯示說大部分的遊 戲會在這附近結束,因此就算可以胡牌但太晚的話也毫無意義,所以就做了此設 定。 而手牌的好壞則定義成還缺多少張才可以胡牌,當然當我們希望胡到的牌型 不同時,需要進的牌量也就會不同,這時就會進行期望值的比較。. 確認自己手牌情況. 還缺多少張才胡牌 ex: 以混一色為目標時缺 5 張 以清一色為目標時缺 7 張 …… ……. 圖 3-9 大牌型模擬時的決策方式 34.

(41) 模擬的方式就直接採用大量牌局的統計,讓我方在所有的牌局都朝向特定的 目標來打牌,例如完全只以混一色為目標,並且只要不是混一色就不會胡牌,同 時隨時記錄下每一個巡目還缺多少手牌才會胡牌,最後就可以得出在某個時間點 若我們還缺多少張時,胡到混一色的機率是多少,往後在實際比賽時,我們就可 以針對手上的牌型,分析出是否該選擇嘗試做大牌型,如同下圖所示,我們會比 較說通常打牌中胡牌的機率以及分數,讓他與嘗試大牌型的機率與分數做比較, 最後就可以選擇出期望值較高的一種選擇。. 通常的胡牌機率× 通常胡牌的分數. 比較勝率 選擇期望值較高的 方向來打牌. 確認手牌狀況 嘗試大牌型的胡牌機率× 大牌型胡牌的分數. 圖 3-10 大牌型模擬的決策過程之二. 35.

(42) 同時在這裡也定義胡牌的分數,以目前 TAAI 以及 TCGA 的比賽規則,當我 們胡牌時可以獲得 1000 分,同時每多一台則可以再多得 500 分,若是自摸的話 簡單計算就是乘上三倍。舉例來說當某玩家胡到了一個三台的牌局,則可以得到 1000+500*3=2500 分,若他是自摸胡牌的話則是 2500*3=7500 分。 根據我們程式大量模擬的成果所示,通常胡牌平均可以獲得 3000 分,此分 數已包含自摸的可能性。並且若讓程式只以混一色為目標來打牌時,胡牌平均約 可以獲得 6000 分,而下表即是以混一色為目標時,每一時間點(剩餘張數)以及缺 多少牌時的胡牌機率表,這裡只顯示部分的表格,完整的放於附錄 1 及 2 中。. 尚缺. 9. 8. 7. 6. 5. 4. 3. 2. 1. 71. 0.014. 0.038. 0.093. 0.197. 0.352. 0.532. 0.711. 0.909. 0.949. 70. 0.014. 0.038. 0.093. 0.197. 0.352. 0.532. 0.711. 0.909. 0.949. 69. 0.014. 0.038. 0.093. 0.197. 0.352. 0.532. 0.711. 0.909. 0.949. 68. 0.014. 0.037. 0.088. 0.197. 0.352. 0.532. 0.706. 0.900. 0.949. 67. 0.013. 0.037. 0.088. 0.191. 0.352. 0.531. 0.694. 0.900. 0.949. …. …. …. …. …. …. …. …. …. …. 55. 0.001. 0.005. 0.029. 0.114. 0.266. 0.424. 0.557. 0.651. 0.730. 54. 0.001. 0.004. 0.024. 0.101. 0.249. 0.413. 0.550. 0.638. 0.719. 53. 0.000. 0.003. 0.020. 0.093. 0.237. 0.395. 0.525. 0.626. 0.712. 剩餘. 表 3-8 混一色的各巡目與缺牌數的胡牌機率表. 36.

(43) 當有了這些數據,在打牌過程中就可以利用這些資料來做期望值的計算,舉 例來說假如在剩餘張數還有 71 張的情況下,也就是自己開局的第一巡目,若是 以混一色為目標來做考慮,發現我們還缺 4 張牌就可以胡到混一色的牌型,查表 後得知在缺 4 張牌且剩餘張數是 71 張的時候,胡牌的機率是 0.532(見表 3-8),預 期上可以獲得 6000 分,同時假設我們只是單純的打牌的話,根據統計結果胡牌 率是 0.8,預期可以獲得 3000 分。這裡胡牌的定義皆為 10 巡目之前,並且設定 其他家不會胡牌,藉此減少掉模擬時變因。 決策過程就如同下圖所示,我們發現選擇混一色打法會獲得更高的期望值, 因此就會嘗試混一色,當然每一巡目我們都可能重新去分析手牌進而重新決定說 該往哪一個方向走。. 比較勝率 通常的胡牌機率× 通常胡牌的分數 確認自己手牌情況 混一色還缺 4 張 (剩餘 71 張牌). 0.8*3000=2400. 嘗試大牌型的胡牌機率× 大牌型胡牌的分數 0.532*6000=3192. 圖 3-11 大牌型模擬的真實決策過程. 37. 選擇期望值較高 的方向來打牌 2400<3192 選擇混一色.

(44) 並且不只是混一色的牌型可以模擬,各種大牌型都可以採用此方法來實作, 舉例像是跟混一色很類似的清一色,同時可以統計出在各時間點以及各剩餘張數 時的胡牌率,同時根據模擬結果顯示,胡到清一色時的分數大約是 8000 分左右, 分數沒有大幅成長的原因有可能是自摸的機率變低所導致。在有了這樣的數據之 後同樣在遊戲中,就可以根據手牌狀況來決定打牌的方向了。以下表 3-9 一樣列 出一部分清一色的模擬成果。. 尚缺. 7. 6. 5. 4. 3. 2. 1. 71. 0.060. 0.138. 0.271. 0.461. 0.712. 0.878. 0.946. 70. 0.060. 0.138. 0.271. 0.461. 0.712. 0.875. 0.946. 69. 0.060. 0.132. 0.271. 0.461. 0.707. 0.871. 0.943. 68. 0.056. 0.132. 0.270. 0.457. 0.701. 0.869. 0.943. 67. 0.056. 0.124. 0.270. 0.457. 0.692. 0.869. 0.941. 66. 0.054. 0.123. 0.261. 0.454. 0.692. 0.867. 0.940. 65. 0.050. 0.118. 0.257. 0.454. 0.689. 0.862. 0.939. 64. 0.044. 0.116. 0.251. 0.451. 0.688. 0.856. 0.936. …. …. …. …. …. …. …. …. 55. 0.009. 0.038. 0.145. 0.399. 0.658. 0.821. 0.919. 54. 0.007. 0.033. 0.132. 0.374. 0.653. 0.819. 0.916. 53. 0.006. 0.028. 0.121. 0.365. 0.653. 0.819. 0.911. 剩餘. 表 3-9 清一色的各巡目與缺牌數的胡牌機率表 38.

(45) 第四章. 實驗與成果. 4.1 動態權重調整 實驗的對象為自己的程式,四家的基本捨牌策略均相同,不過設定第一家會 進行動態權重的調整,也就是會記錄其他三家的捨牌取向,並且自動調整每一張 牌的權重來使得自己能做出更準確的捨牌判斷,其中分數的計算為胡牌兩分,每 一台多一分。而一般程式即為原始版本不採用動態調分的 ThousandWind。實驗方 式為直接先對戰 4000 場,每一家都會輪流當起始玩家。首先可以發現大家的分 數都差不多,接下來讓遊戲先進行不計分的 30 場,並讓第一家開始進行統計以 及動態調整,接著用調整結果再進行 4000 場的對戰,在之中不會進行調整,可 以發現分數明顯上升許多,如果繼續模擬到 60 場,則效果也會再些微提升,如 圖 4-1 所示。. 8000 6000. 總 分. 4000. 動態調整權 重. 2000. 一般程式. 0 0. 30. 60. 一般程式. -2000 一般程式 -4000 -6000 學習時間(場). 圖 4-1 動態權重調整的成果. 39.

(46) 則繼續再下去的話因各牌統計的比例已經趨於穩定,故效果就差不多了,這 邊也可以發現只要少量的場次統計,就可以讓捨牌期望值的計算更加準確,當然 也就代表勝率能夠有效的提升。. TCGA 2013 7 將的總分. ThousandWind -23000. MAJO 20500. LongCat 61000. GrandSlam -58500. 12 將的總分. 28000. 7000. 75000. -110000. 8 至 12 將的分數. 51000. -13500. 14000. -51500. 表 4-1 TCGA 2013 的比賽結果. 上表是 TCGA 2013 比賽時的紀錄,其中一將代表是 16 場的比賽,當中各玩 家會輪流當莊家以及首家。因當時設定上的錯誤,使得我的程式直到第八將開始 才開始利用統計結果來做動態權重的調整,這邊也可以發現,程式若沒有使用這 樣的機制時,也就是前七將時,權重計算不準確,因此表現不佳,但在後半段的 比賽卻有了大幅的進步,不只是一下子就爬到第二名的位置,甚至若只單看後半 段的分數,我的程式是遠遠超過其他所有程式的。 而往後的比賽也可以嘗試套用過往統計出來的權重分數,畢竟假如其他家的 習慣與我之前所統計的成果不同,我的程式也能在比賽過程中自動做調整,以應 付各種情況。. 40.

(47) 4.2 避免放槍的機制. TAAI 2012 胡別人牌. ThousandWind. MAJO. LongCat. GrandSlam. 28. 23. 36. 11. 自摸. 4. 2. 14. 3. 胡+自摸. 32. 25. 50. 14. 放槍. 17. 29. 21. 31. 表 4-2 TAAI 2012 的比賽結果. TCGA 2013 胡別人牌. ThousandWind. MAJO. LongCat. GrandSlam. 39. 29. 47. 20. 自摸. 11. 15. 18. 5. 胡+自摸. 50. 44. 65. 25. 放槍. 21. 37. 29. 48. 表 4-3 TCGA 2013 的比賽結果. 以上表 4-2 與表 4-3 是兩次比賽中胡牌與放槍的次數統計,這邊也可以發現 我的程式在兩次比賽中的放槍率都是最低的,當然若是想降低放槍率,也很有可 能一同將胡牌率也一起降低,因此很難看出這個方法的實際成效,不過以自己程 式自動對下的成果來看,採用這項避免放槍的作法,大約可以降低 5%至 10%左 右的放槍率,而胡牌率則只會下降 1%至 2%,從總分來說是有些成長。. 41.

(48) 4.3 大牌型的模擬. 為了測試大牌型模擬的效果,測試方法設定為讓程式以通常打牌來看總分, 以及完全以特定牌型為目標來看總分,最後是採用模擬結果,比較期望值後來做 決策是否常是大牌型,以這三種方式來看總分會有什麼樣的趨勢。 同時為了讓實驗效果明顯,我們將玩家的起手配牌作調整,讓實驗對象起手 就能擁有加起來至少十二張的萬子與字牌,也就是起手就有些接近混一色的牌型, 而實驗場次為四十萬場,其中每一家也都會輪流當起使玩家。. 決策方式. 總分. 胡牌次數. 通常打牌. 2393628. 308494. 採用模擬結果做決策. 2586890. 224924. 完全以混一色為目標. 2293808. 152701. 表 4-4 採用混一色模擬決策的結果. 這邊可以發現,當嘗試以混一色為目標在打牌時,必然胡牌次數會下降,因 為捨牌並不是當下最佳期望值的捨牌,但是因為胡到混一色的次數上升,所以分 數也有所提高,但是完全以混一色為目標時,也因為胡牌次數減少太多,因此較. 42.

(49) 使得分數反而下降,在這樣的實驗環境下,採用模擬結果來做決策的方法大約比 平常打牌多上約百分之十的分數,就實驗結果來看這模擬方法是有效果的。 同樣我們可以比照混一色的模擬方式,來進行清一色的實驗,同樣遊戲會進 行四十萬場,同時為了提高實驗效果,我們也是將玩家的起始手牌作調整,設定 成一開始就會擁有至少十二張的萬子,也就是接近清一色的牌型,同樣進行正常 的捨牌、完全以清一色為目標、以及採用模擬結果來做決策。. 決策方式. 總分. 胡牌次數. 通常打牌. 2388649. 308073. 採用模擬結果做決策. 3493625. 272829. 完全以清一色為目標. 2751314. 164233. 表 4-5 採用清一色模擬決策的結果. 這邊同樣可以看到是以模擬結果來做決策的效果最好,甚至比上正常打牌足 足有高達百分之三十的成效,當然從完全以清一色為目標來看都有些許變好,這 邊可以推論是這樣的配牌很容易導致清一色的胡牌,不過就算這樣也是可以看出 以模擬的效果會來的比一味的嘗試還要好。. 43.

(50) 第五章. 結論與未來展望. 根據實驗結果與比賽紀錄,可以發現本程式所提出的各類改良算法確實讓電 腦麻將程式的牌力變得更好,藉由統計各家的捨牌,可以更準確掌握遊戲中各種 牌出現的真實機率,並且進行動態的權重更新,當對上其他玩家時也能夠自我調 整,並且統計的數據未來也可以做其他的發揮。另外避免放槍這領域依然還有許 多的發展空間,或許也可以藉由統計各家捨牌,嘗試建立出捨牌與胡牌之間的關 係表,可能就有辦法歸納出當那些牌出現過時,那些牌就是危險的。而小牌型的 比對則可以有效保護已到手的牌型,而未來也可以加入一些計算來使得捨牌可以 朝向該方向做發展。最後是大牌型的模擬,在這裡只實際選用了兩種牌型來做研 究,事實上其他的牌型也都可以如法炮製,再建立所有的表格後,當每一巡目需 要捨牌時,就可以選擇期望值最高的方向來做選擇,而未來也可以研究當有複數 選擇時,或許不一定是選期望值最高的選項,因為像是清一色與混一色可能要朝 向的方向大致相同,但跟字一色或是大三元這類的牌又不同了,所以同類型的應 該是可以一起比較。 而不管是動態的權重調整,或者是各種模擬統計的應用,這類方法可能也是 可以應用於其他類型的遊戲上面,同時麻將依然是一個剛起步的研究課題,有許 多算法都來有設計與改良的空間,希望本論文可以作為一個參考方向,讓未來能 夠有更好的研究成果出來。. 44.

(51) 附錄 尚缺. 9. 8. 7. 6. 5. 4. 3. 2. 1. 71. 0.014. 0.038. 0.093. 0.197. 0.352. 0.532. 0.711. 0.909. 0.949. 70. 0.014. 0.038. 0.093. 0.197. 0.352. 0.532. 0.711. 0.909. 0.949. 69. 0.014. 0.038. 0.093. 0.197. 0.352. 0.532. 0.711. 0.909. 0.949. 68. 0.014. 0.037. 0.088. 0.197. 0.352. 0.532. 0.706. 0.900. 0.949. 67. 0.013. 0.037. 0.088. 0.191. 0.352. 0.531. 0.694. 0.900. 0.949. 66. 0.012. 0.034. 0.085. 0.191. 0.345. 0.530. 0.688. 0.760. 0.909. 65. 0.010. 0.031. 0.084. 0.190. 0.344. 0.524. 0.663. 0.760. 0.909. 64. 0.008. 0.027. 0.081. 0.189. 0.342. 0.507. 0.634. 0.703. 0.909. 63. 0.007. 0.024. 0.076. 0.186. 0.341. 0.504. 0.626. 0.703. 0.900. 62. 0.005. 0.020. 0.068. 0.173. 0.339. 0.493. 0.625. 0.702. 0.900. 61. 0.004. 0.017. 0.062. 0.170. 0.331. 0.488. 0.613. 0.702. 0.773. 60. 0.003. 0.014. 0.056. 0.163. 0.319. 0.483. 0.610. 0.702. 0.773. 59. 0.002. 0.012. 0.050. 0.155. 0.314. 0.482. 0.608. 0.699. 0.755. 58. 0.002. 0.010. 0.044. 0.141. 0.306. 0.463. 0.600. 0.681. 0.743. 57. 0.001. 0.008. 0.038. 0.133. 0.296. 0.460. 0.585. 0.665. 0.742. 56. 0.001. 0.006. 0.033. 0.124. 0.284. 0.442. 0.567. 0.652. 0.731. 55. 0.001. 0.005. 0.029. 0.114. 0.266. 0.424. 0.557. 0.651. 0.730. 54. 0.001. 0.004. 0.024. 0.101. 0.249. 0.413. 0.550. 0.638. 0.719. 53. 0.000. 0.003. 0.020. 0.093. 0.237. 0.395. 0.525. 0.626. 0.712. 52. 0.000. 0.002. 0.017. 0.083. 0.223. 0.375. 0.509. 0.611. 0.708. 剩餘. 附錄 1 混一色的模擬數據 45.

(52) 尚缺. 7. 6. 5. 4. 3. 2. 1. 71. 0.060. 0.138. 0.271. 0.461. 0.712. 0.878. 0.946. 70. 0.060. 0.138. 0.271. 0.461. 0.712. 0.875. 0.946. 69. 0.060. 0.132. 0.271. 0.461. 0.707. 0.871. 0.943. 68. 0.056. 0.132. 0.270. 0.457. 0.701. 0.869. 0.943. 67. 0.056. 0.124. 0.270. 0.457. 0.692. 0.869. 0.941. 66. 0.054. 0.123. 0.261. 0.454. 0.692. 0.867. 0.940. 65. 0.050. 0.118. 0.257. 0.454. 0.689. 0.862. 0.939. 64. 0.044. 0.116. 0.251. 0.451. 0.688. 0.856. 0.936. 63. 0.039. 0.107. 0.245. 0.446. 0.682. 0.855. 0.934. 62. 0.034. 0.098. 0.230. 0.445. 0.679. 0.853. 0.934. 61. 0.028. 0.087. 0.220. 0.444. 0.672. 0.852. 0.932. 60. 0.024. 0.077. 0.209. 0.442. 0.662. 0.848. 0.930. 59. 0.020. 0.068. 0.197. 0.441. 0.662. 0.840. 0.928. 58. 0.017. 0.060. 0.182. 0.420. 0.660. 0.833. 0.926. 57. 0.014. 0.052. 0.170. 0.415. 0.660. 0.833. 0.923. 56. 0.011. 0.045. 0.158. 0.409. 0.660. 0.829. 0.921. 55. 0.009. 0.038. 0.145. 0.399. 0.658. 0.821. 0.919. 54. 0.007. 0.033. 0.132. 0.374. 0.653. 0.819. 0.916. 53. 0.006. 0.028. 0.121. 0.365. 0.653. 0.819. 0.911. 52. 0.005. 0.024. 0.109. 0.354. 0.650. 0.802. 0.905. 51. 0.004. 0.020. 0.099. 0.339. 0.647. 0.799. 0.900. 剩餘. 附錄 2 清一色的模擬數據. 46.

(53) TAAI2012 The 1th Match. TAAI2012 The 2th Match. LongCat. NDHU. ThousandWind. MAJO. LongCat. NDHU. ThousandWind. MAJO. Round 1. 0. -1500. 1500. 0. Round 1. 1500. 0. 0. -1500. Round 2. 0. 0. -2000. 2000. Round 2. 1500. 0. -1500. 0. Round 3. 8000. -2500. -3000. -2500. Round 3. 0. 0. 0. 0. Round 4. 0. 0. 1500. -1500. Round 4. 0. 2500. 0. -2500. Round 5. -2000. 5000. -1500. -1500. Round 5. 0. 0. 1500. -1500. Round 6. 5000. -2000. -1500. -1500. Round 6. -2000. -2000. -2000. 6000. Round 7. 6500. -2000. -2500. -2000. Round 7. 1500. 0. 0. -1500. Round 8. 2500. 0. 0. -2500. Round 8. -1500. 0. 0. 1500. Round 9. 1500. -1500. 0. 0. Round 9. 0. 2000. -2000. 0. Round 10. 0. 1500. 0. -1500. Round 10. -1500. -1500. 5000. -2000. Round 11. -1500. 0. 1500. 0. Round 11. 0. 0. 1500. -1500. Round 12. 1500. 0. -1500. 0. Round 12. 3000. -3000. 0. 0. Round 13. 0. -3000. 0. 3000. Round 13. 2500. 0. 0. -2500. Round 14. 0. 0. 1500. -1500. Round 14. -1500. 0. 1500. 0. Round 15. -2000. 0. 2000. 0. Round 15. 1500. 0. -1500. 0. Round 16. 0. 2000. 0. -2000. Round 16. 2000. -2000. 0. 0. TAAI2012 The 3th Match. TAAI2012 The 4th Match. LongCat. NDHU. ThousandWind. MAJO. LongCat. NDHU. ThousandWind. MAJO. Round 1. 0. 2000. 0. -2000. Round 1. 2000. 0. -2000. 0. Round 2. 0. 0. 3000. -3000. Round 2. 0. -2000. 0. 2000. Round 3. 8000. -2500. -2500. -3000. Round 3. -4000. 4000. 0. 0. Round 4. -1500. 0. 0. 1500. Round 4. 0. 1500. 0. -1500. Round 5. 0. -1000. 0. 1000. Round 5. 0. -1000. 0. 1000. Round 6. 0. 1500. -1500. 0. Round 6. 1500. 0. -1500. 0. Round 7. 0. 0. 2000. -2000. Round 7. 0. 0. 0. 0. Round 8. 0. -1500. 1500. 0. Round 8. 5000. -2000. -1500. -1500. Round 9. 1500. -1500. 0. 0. Round 9. 1500. -1500. 0. 0. Round 10. 8000. -3000. -2500. -2500. Round 10. 0. 0. 1000. -1000. Round 11. 0. 1500. -1500. 0. Round 11. -2000. -1500. 5000. -1500. Round 12. 0. -1500. 1500. 0. Round 12. 0. 0. 0. 0. Round 13. 2000. -2000. 0. 0. Round 13. 1000. -1000. 0. 0. Round 14. 0. 2000. 0. -2000. Round 14. 1500. 0. -1500. 0. Round 15. 1000. -1000. 0. 0. Round 15. 0. -1500. 0. 1500. Round 16. 1500. -1500. 0. 0. Round 16. 0. 0. 2500. -2500. 47.

(54) TAAI2012 The 5th Match. TAAI2012 The 6th Match. LongCat. NDHU. ThousandWind. MAJO. LongCat. NDHU. ThousandWind. MAJO. Round 1. 3000. -3000. 0. 0. Round 1. 1500. 0. 0. -1500. Round 2. -1500. 0. 1500. 0. Round 2. -1500. 0. 1500. 0. Round 3. -2000. 2000. 0. 0. Round 3. 2000. 0. -2000. 0. Round 4. 0. -2000. 0. 2000. Round 4. -2000. -2000. 6000. -2000. Round 5. 2000. -2000. 0. 0. Round 5. 1500. 0. 0. -1500. Round 6. 0. 0. 0. 0. Round 6. 0. -2000. 2000. 0. Round 7. 2000. -2000. 0. 0. Round 7. -1500. 1500. 0. 0. Round 8. 2000. 0. 0. -2000. Round 8. 0. 0. 0. 0. Round 9. 0. 0. 0. 0. Round 9. 0. -2000. 2000. 0. Round 10. 0. 1500. 0. -1500. Round 10. 2000. -2000. 0. 0. Round 11. 0. 1500. -1500. 0. Round 11. -1500. 0. 1500. 0. Round 12. 1500. 0. 0. -1500. Round 12. 5000. -1500. -2000. -1500. Round 13. -1500. 1500. 0. 0. Round 13. 2500. -2500. 0. 0. Round 14. 0. -2000. 2000. 0. Round 14. 0. 0. 2000. -2000. Round 15. -2000. 2000. 0. 0. Round 15. -2500. 7500. -2500. -2500. Round 16. -2500. 0. 0. 2500. Round 16. -2000. -2000. -2500. 6500. TAAI2012 The 7th Match. TAAI2012 The 8th Match. LongCat. NDHU. ThousandWind. MAJO. LongCat. NDHU. ThousandWind. MAJO. Round 1. -1500. 0. 1500. 0. Round 1. -1500. 0. 1500. 0. Round 2. -3000. -2500. -2500. 8000. Round 2. 8000. -2500. -2500. -3000. Round 3. 0. 0. 0. 0. Round 3. 0. 0. 1500. -1500. Round 4. 0. 2000. 0. -2000. Round 4. 1500. -1500. 0. 0. Round 5. 5000. -2000. -1500. -1500. Round 5. 0. 1500. -1500. 0. Round 6. 0. 0. 2000. -2000. Round 6. 0. 0. 2000. -2000. Round 7. 0. 2500. -2500. 0. Round 7. 0. -1500. 1500. 0. Round 8. 0. 0. 0. 0. Round 8. 7500. -2500. -2500. -2500. Round 9. 8000. -3000. -2500. -2500. Round 9. 2000. 0. -2000. 0. Round 10. 0. 0. 1000. -1000. Round 10. 0. -1500. 0. 1500. Round 11. 6500. -2000. -2500. -2000. Round 11. 8000. -2500. -3000. -2500. Round 12. -1500. 0. 0. 1500. Round 12. 1500. -1500. 0. 0. Round 13. -1500. -2000. 5000. -1500. Round 13. 0. 2000. 0. -2000. Round 14. 2000. 0. 0. -2000. Round 14. 1000. 0. -1000. 0. Round 15. -1000. 1000. 0. 0. Round 15. -2000. 0. 2000. 0. Round 16. 1000. 0. -1000. 0. Round 16. 2000. -2000. 0. 0. 附錄 3 TAAI 2012 48 的比賽紀錄.

(55) TCGA2013 The 1th Match. TCGA2013 The 2th Match. ThousandWind. MAJO. LongCat. NDHU. ThousandWind. MAJO. LongCat. NDHU. Round 1. 2000. 0. 0. -2000. Round 1. 1000. 0. 0. -1000. Round 2. 0. -1000. 1000. 0. Round 2. 0. 0. 1000. -1000. Round 3. 0. 0. -2500. 2500. Round 3. -2000. -1500. 5000. -1500. Round 4. 0. -2500. 0. 2500. Round 4. -1500. -1500. 5000. -2000. Round 5. 0. -2000. 2000. 0. Round 5. 5000. -1500. -2000. -1500. Round 6. 0. 1000. -1000. 0. Round 6. 0. -2000. 2000. 0. Round 7. -2000. 2000. 0. 0. Round 7. 0. -2500. 0. 2500. Round 8. -3000. 9000. -3000. -3000. Round 8. 0. -1500. 0. 1500. Round 9. 0. 2000. -2000. 0. Round 9. -1500. 0. 1500. 0. Round 10. -1500. 5000. -1500. -2000. Round 10. 0. 0. 1000. -1000. Round 11. 1500. -1500. 0. 0. Round 11. -2000. -1500. 5000. -1500. Round 12. 0. 1500. 0. -1500. Round 12. 0. 0. 0. 0. Round 13. -2000. 0. 2000. 0. Round 13. 1000. -1000. 0. 0. Round 14. 0. 1000. -1000. 0. Round 14. 1500. 0. -1500. 0. Round 15. 2000. -2000. 0. 0. Round 15. 0. -1500. 0. 1500. Round 16. -1000. 0. 1000. 0. Round 16. 0. 0. 2500. -2500. TCGA2013 The 3th Match. TCGA2013 The 4th Match. ThousandWind. MAJO. LongCat. NDHU. ThousandWind. MAJO. LongCat. NDHU. Round 1. -2500. 0. 2500. 0. Round 1. -2000. -2000. 6000. -2000. Round 2. -2000. -2500. 6500. -2000. Round 2. 0. 0. -1500. 1500. Round 3. 0. -2000. 2000. 0. Round 3. 0. 0. -1500. 1500. Round 4. -2000. 6500. -2500. -2000. Round 4. -2000. 0. 2000. 0. Round 5. -2500. -2000. -2000. 6500. Round 5. 3500. 0. 0. -3500. Round 6. 0. 2500. 0. -2500. Round 6. 2000. -2000. 0. 0. Round 7. -1500. 5000. -1500. -2000. Round 7. 1000. 0. -1000. 0. Round 8. 0. 0. 1500. -1500. Round 8. -3000. 8000. -2500. -2500. Round 9. 0. -1500. 1500. 0. Round 9. 0. 0. 1500. -1500. Round 10. 0. -1500. 1500. 0. Round 10. 0. 0. 2500. -2500. Round 11. 0. 2000. 0. -2000. Round 11. -3000. -3500. -3000. 9500. Round 12. 0. 1500. 0. -1500. Round 12. 2000. 0. 0. -2000. Round 13. 2500. 0. 0. -2500. Round 13. 2000. 0. 0. -2000. Round 14. 0. 0. 1500. -1500. Round 14. 0. 2500. -2500. 0. Round 15. 0. 0. 0. 0. Round 15. 8000. -3000. -2500. -2500. Round 16. 0. 0. 0. 0. Round 16. -3500. -3000. 9500. -3000. 49.

(56) TCGA2013 The 5th Match. TCGA2013 The 6th Match. ThousandWind. MAJO. LongCat. NDHU. ThousandWind. MAJO. LongCat. NDHU. Round 1. 0. -2500. 0. 2500. Round 1. 0. 0. 0. 0. Round 2. 6500. -2000. -2000. -2500. Round 2. 1500. 0. -1500. 0. Round 3. -2000. 5000. -1500. -1500. Round 3. 0. -1500. 1500. 0. Round 4. -1500. 0. 0. 1500. Round 4. 0. 0. 0. 0. Round 5. 0. 0. -1500. 1500. Round 5. -2500. -2000. 6500. -2000. Round 6. 0. -3000. 0. 3000. Round 6. 0. 0. -4000. 4000. Round 7. 2500. -2500. 0. 0. Round 7. -1500. 1500. 0. 0. Round 8. 0. 0. 2500. -2500. Round 8. -2000. -2000. 6000. -2000. Round 9. -3500. 10500. -3500. -3500. Round 9. 2500. 0. 0. -2500. Round 10. 4000. -4000. 0. 0. Round 10. 0. 1500. 0. -1500. Round 11. -1500. 0. 0. 1500. Round 11. 0. 0. 0. 0. Round 12. -2500. 8000. -3000. -2500. Round 12. -2000. 0. 2000. 0. Round 13. 0. -4500. 0. 4500. Round 13. 1500. 0. 0. -1500. Round 14. 1500. -1500. 0. 0. Round 14. -2000. 6500. -2000. -2500. Round 15. 0. 0. 2000. -2000. Round 15. -2000. -2500. 6500. -2000. Round 16. 0. 0. 3000. -3000. Round 16. 0. -1500. 1500. 0. TCGA2013 The 7th Match. TCGA2013 The 8th Match. ThousandWind. MAJO. LongCat. NDHU. ThousandWind. MAJO. LongCat. NDHU. Round 1. 0. -1500. 1500. 0. Round 1. 0. 3000. 0. -3000. Round 2. 0. 0. 2000. -2000. Round 2. 1500. 0. 0. -1500. Round 3. 2000. 0. -2000. 0. Round 3. 0. 1500. -1500. 0. Round 4. 0. 0. 1500. -1500. Round 4. 12500. -4500. -4000. -4000. Round 5. -1500. 1500. 0. 0. Round 5. -1500. -1500. 5000. -2000. Round 6. 2000. 0. -2000. 0. Round 6. 1500. 0. 0. -1500. Round 7. 0. 0. 2000. -2000. Round 7. 0. 1500. 0. -1500. Round 8. 0. 0. 1500. -1500. Round 8. 0. -3000. 0. 3000. Round 9. -2000. 2000. 0. 0. Round 9. -2000. -2000. 6500. -2500. Round 10. -3500. -3000. 9500. -3000. Round 10. 0. 1500. 0. -1500. Round 11. -2500. 8000. -3000. -2500. Round 11. -2000. -1500. -1500. 5000. Round 12. 0. 0. -1500. 1500. Round 12. -1500. 0. 1500. 0. Round 13. -2000. -2500. 6500. -2000. Round 13. 6500. -2000. -2000. -2500. Round 14. -3000. 3000. 0. 0. Round 14. 0. 0. 2000. -2000. Round 15. -2000. 0. 2000. 0. Round 15. 0. -1000. 1000. 0. Round 16. -2000. 6500. -2000. -2500. Round 16. 0. -2000. 2000. 0. 50.

(57) TCGA2013 The 9th Match. TCGA2013 The 10th Match. ThousandWind. MAJO. LongCat. NDHU. ThousandWind. MAJO. LongCat. NDHU. Round 1. 2000. 0. -2000. 0. Round 1. 5000. -2000. -1500. -1500. Round 2. -2000. -2000. 6000. -2000. Round 2. 0. 1500. -1500. 0. Round 3. 1500. 0. 0. -1500. Round 3. -2500. -2500. 8000. -3000. Round 4. 1500. 0. 0. -1500. Round 4. 0. -1000. 0. 1000. Round 5. 0. -1500. 1500. 0. Round 5. 8000. -3000. -2500. -2500. Round 6. 0. 1000. 0. -1000. Round 6. 1500. 0. -1500. 0. Round 7. 0. 2000. 0. -2000. Round 7. 8000. -2500. -2500. -3000. Round 8. 2000. 0. 0. -2000. Round 8. 0. -2000. 0. 2000. Round 9. -3000. -3000. -3000. 9000. Round 9. 0. 0. 0. 0. Round 10. 0. 1500. -1500. 0. Round 10. 0. 0. 0. 0. Round 11. 1000. 0. -1000. 0. Round 11. 1500. 0. 0. -1500. Round 12. 2500. 0. 0. -2500. Round 12. -2000. -1500. 5000. -1500. Round 13. 1000. 0. -1000. 0. Round 13. -2000. 0. 2000. 0. Round 14. -2000. -2000. 6000. -2000. Round 14. 0. -1500. 0. 1500. Round 15. -2000. 2000. 0. 0. Round 15. 1500. 0. -1500. 0. Round 16. 0. -1500. 0. 1500. Round 16. -2500. 6500. -2000. -2000. TCGA2013 The 11th Match. TCGA2013 The 12th Match. ThousandWind. MAJO. LongCat. NDHU. ThousandWind. MAJO. LongCat. NDHU. Round 1. 0. 0. 2000. -2000. Round 1. 1500. 0. -1500. 0. Round 2. 2500. -2500. 0. 0. Round 2. -1000. 0. 1000. 0. Round 3. 0. 0. 1500. -1500. Round 3. 2500. 0. 0. -2500. Round 4. 0. 2000. -2000. 0. Round 4. 0. 0. 1500. -1500. Round 5. 0. 0. 2000. -2000. Round 5. -2000. 6500. -2500. -2000. Round 6. -3000. -2500. -2500. 8000. Round 6. -2000. 0. 2000. 0. Round 7. -1000. 0. 1000. 0. Round 7. -2000. 0. 2000. 0. Round 8. 0. 2500. 0. -2500. Round 8. 7500. -2500. -2500. -2500. Round 9. -2000. 6500. -2500. -2000. Round 9. 3000. -3000. 0. 0. Round 10. -2000. -1500. 5000. -1500. Round 10. 2000. -2000. 0. 0. Round 11. 0. -2000. 2000. 0. Round 11. 2000. 0. 0. -2000. Round 12. 0. -2000. 2000. 0. Round 12. 0. 2000. -2000. 0. Round 13. 0. -3000. 3000. 0. Round 13. 0. 2000. -2000. 0. Round 14. 2000. 0. 0. -2000. Round 14. -2500. 7500. -2500. -2500. Round 15. 6500. -2000. -2000. -2500. Round 15. 5000. -1500. -1500. -2000. Round 16. 0. 2000. -2000. 0. Round 16. 0. 1500. -1500. 0. 附錄 4 TCGA 2013 51 的比賽紀錄.

(58) 結束巡目. 胡牌次數. 結束巡目. 胡牌次數. 無胡牌. 6707. 42. 16111. 15. 1245. 43. 15868. 16. 1455. 44. 15538. 17. 1671. 45. 15633. 18. 1933. 46. 15059. 19. 2203. 47. 13983. 20. 2543. 48. 13254. 21. 2809. 49. 12479. 22. 3289. 50. 11241. 23. 3815. 51. 10134. 24. 4174. 52. 8958. 25. 4858. 53. 7757. 26. 5606. 54. 6710. 27. 6139. 55. 5703. 28. 6720. 56. 4524. 29. 7406. 57. 3700. 30. 8405. 58. 2877. 31. 9120. 59. 2209. 32. 10123. 60. 1612. 33. 10864. 61. 1145. 34. 11665. 62. 760. 35. 12588. 63. 499. 36. 13161. 64. 303. 37. 13931. 65. 185. 38. 14539. 66. 100. 39. 15155. 67. 50. 40. 15671. 68. 25. 41. 15774. 69. 14. 附錄 5 40 萬場的胡牌時間點統計 52.

(59) 1台 莊家. 只適用莊家,莊家胡別人可以多算一台,被胡(包括平 家自摸)也要多賠一台。如果是莊家自摸,則其他三家 都要多算一台。. 連莊. 莊家連續作莊,當一盤結束沒有人胡或是莊家胡牌,下 一盤就算莊家連莊。連莊一次為連一拉一,共兩台,連 兩次為連二拉二,共四台,依此類推。. 門清. 胡牌時無吃碰槓等情形,全部牌都是自己摸到的。. 自摸. 最後胡牌的那一張牌為自己摸進的牌。. 斷么九. 胡牌時牌裡均無一、九牌或字牌。. 海底撈月. 在此局的最後一張牌自摸而胡牌。. 花牌. 跟門風相符的花牌加一番:東家(春、梅) ,南家(夏、 蘭),西家(秋、菊),北家(冬、竹)。. 門風刻. 開牌時,位置反時針方向計算風位,依序為東南西北; 胡牌時有屬於自己風位的刻子,多加一台。. 三元牌. 有紅中、白板、或青發的刻子或槓。 例如:中中中。 2台. 全求. 胡牌時,牌面只剩一張單吊牌,其餘全部為吃或碰。(自 摸不計). 春夏秋冬. 即花牌有春夏秋冬。. 梅蘭竹菊. 即花牌有梅蘭竹菊。. 平胡. 胡牌時牌裡只有順子而沒有刻子、槓子及字牌。花牌(獨 聽、自摸不計)。. 混帶么. 胡牌時,牌裡的對子、順子、刻子或槓子均含么九牌或 由字牌組成。. 三色同順. 胡牌時,牌裡有三種花色的同一種順子,門清者此台數 可乘上兩倍,等於計為四台。. 一條龍. 胡牌時,牌裡有同種花色 1~9 齊全的牌,門清者此台數 可乘上兩倍,等於計為四台。. 雙雙龍抱. 胡牌時,牌組是門清且牌裡有兩組雙龍抱,例如:112233 萬、556677 索。. 三暗刻. 牌面有三組暗刻。 3台. 門清自摸. 牌面同時有門清和自摸。 4台. 碰碰胡. 胡牌時,由刻子(或槓子)以及一個將所組成。 53.

參考文獻

相關文件

Had I the heaven’s embroidered cloths, Enwrought with golden and silver light, The blue and the dim and the dark cloths Of night and light and the half-light,. I would spread the

高等電腦輔助設計與製造 (Advanced Computer Aided Design and Manufacturing).

 name common laboratory apparatus (e.g., beaker, test tube, test-tube rack, glass rod, dropper, spatula, measuring cylinder, Bunsen burner, tripod, wire gauze and heat-proof

Microphone and 600 ohm line conduits shall be mechanically and electrically connected to receptacle boxes and electrically grounded to the audio system ground point.. Lines in

Experiment a little with the Hello program. It will say that it has no clue what you mean by ouch. The exact wording of the error message is dependent on the compiler, but it might

Keywords: Computer game applications; CCNA Certification Training; digital content design; game-based Learning;

Army, we combined the virtual reality of the computer with the current training of the Republic of China Amy and invent the similar training environment to assist the

Classifier which uses OpenCV (Open Source Computer Vision Library) was a detector that has been training for face detecting.. The result of the experiment is 2 frames per second, and