天鳳牌譜解析(0) 概要
はじめに
天鳳牌譜解析プログラムを作成したので色々な統計値を計算してみようと思います。
牌譜の入手方法
下記のサイトを参考に牌譜(mjlogファイル)を入手しました。
牌譜解析の方法
牌譜解析には3通りのやり方があるようです。
1. mjlogファイルを解凍し、生成されたXMLファイルをパース・解析する
2. Flash版専用ブラウザと自作のスクリプトを使用してmjlogファイルを解析する
3. Flash版専用ブラウザを使ってmjlogファイルをtxtファイル(mjscoreのような形式)に変換し、パース・解析する
私は1番目の方法を採用しました。理由は実装言語の制限が緩いためです。2番目の方法はjavascriptで実装する必要があり、3番目の方法はマルチバイト文字(shift-jis)を扱える言語で実装する必要があります。一方で1番目の方法はASCII文字さえ扱えれば良いのです。また1番目と3番目の方法は自力でパースを行うので、正規表現を使える言語を採用すれば実装が容易になります。以上のことから牌譜解析プログラムをC++で実装しました(他の理由としては計算速度が高速なため)。
牌譜の具体的な解析方法については、上記のリンク先のサイトを読めば十分に理解できるので解説しません。
解析に用いる牌譜
2011年から2018年までの天鳳鳳凰卓における東南戦および東風戦の牌譜を入手しました。手始めに試合数と局数を調べてまとめました。
- 鳳凰東南戦喰アリ赤
年 | 試合数 | 局数 |
---|---|---|
2011 | 101042 | 1092585 |
2012 | 117291 | 1265877 |
2013 | 132179 | 1426162 |
2014 | 141578 | 1524759 |
2015 | 152491 | 1637760 |
2016 | 159798 | 1710645 |
2017 | 169422 | 1808240 |
2018 | 173554 | 1849085 |
合計 | 1147355 | 12315113 |
- 鳳凰東風戦喰アリ赤
年 | 試合数 | 局数 |
---|---|---|
2011 | 64386 | 368637 |
2012 | 84928 | 484249 |
2013 | 69790 | 397689 |
2014 | 47782 | 272469 |
2015 | 45765 | 259758 |
2016 | 44355 | 251646 |
2017 | 30526 | 172357 |
2018 | 36504 | 206612 |
合計 | 424036 | 2413417 |
今後の牌譜解析では2011年から2018年の全ての牌譜を入力ソースにする予定です(あまりにも時間がかかるようなら見直すかも)。
おわりに
今回は牌譜解析の概要だけ説明して、具体的な統計値は後日報告したいと思います。何を解析するのかについては、シャンテン数の正確かつ高速な計算が私の売りなのでシャンテン数や有効牌関係の統計、牌山を絡めた統計などを計算する予定です。