麻雀の打牌選択アルゴリズム(1) - koba::blog の続き。前回は打牌選択の基準を待ちの牌種重視から枚数重視としたが、今回はその枚数を実際に「見えていない枚数」*1としてみる。
このためには配牌、自摸、打牌、副露、槓のタイミングで枚数をカウントする必要があるので、これを行うクラス Majiang.SuanPai
*2を新たに追加した。
枚数を数えるためにわざわざクラスを追加したのは、将来的にこのクラスに危険牌読み、山読み、手牌読みも実装したいから。
ソースコードの差分は以下を参照。
新旧アルゴリズムの対戦結果は以下の通り。
対戦数 | 1,000 | 総局数 | 9,608 |
---|---|---|---|
1位率 | .255 | 和了率 | .227 |
2位率 | .260 | 放銃率 | .154 |
3位率 | .269 | 立直率 | .437 |
4位率 | .216 | 副露率 | .000 |
平均順位 | 2.45 | 平均打点 | 6,629 |
和了役 | 出現回数 | 出現率 | 和了役 | 出現回数 | 出現率 | |
---|---|---|---|---|---|---|
ドラ | 922 | 42.25% | 翻牌 | 161 | 7.38% | |
赤ドラ | 973 | 44.59% | 平和 | 524 | 24.01% | |
裏ドラ | 865 | 39.64% | 断幺九 | 207 | 9.49% | |
立直 | 2,165 | 99.22% | 一盃口 | 109 | 5.00% | |
ダブル立直 | 7 | 0.32% | 三色同順 | 42 | 1.92% | |
一発 | 640 | 29.33% | 一気通貫 | 25 | 1.15% | |
門前清自摸和 | 502 | 23.01% | 七対子 | 137 | 6.28% |
平均順位が 2.48位 → 2.45位 と若干上昇したが、期待したほどの成績上昇ではなかった。立直率、和了率はそれぞれ 43.8% → 43.7%、22.8% → 22.7% と横ばいだが、放銃率が 16.3% → 15.4% と下がっている原因が不明*3。
現状の打牌を見ていると孤立牌の切り順に問題がありそうなので、次回は孤立牌の有効度をはかるアルゴリズムを導入する。