麻雀の副露判断アルゴリズム(2) - koba::blog で役ありの向聴数が計算できるようになったので、基本的には向聴数が減る場合に鳴けばよいのであるが、実際に動かしてみると以下の問題があった。
- オリている最中でも鳴いて手詰まりを起こしてしまう
- オリているのに暗槓、加槓をして立直者に裏ドラを乗せてしまう
- さかんに大明槓する*1
今回はこれを調整する。
副露(チー・ポン・大明槓)
Majiang.Player.prototype.select_fulou()
に以下の判断を追加した。
/* 立直者がいる場合は副露しない */ if (this._lizhi.filter(function(x){return x}).length > 0) return;
暗槓・加槓
Majiang.Player.prototype.select_gang()
に以下の判断を追加した。
var n_xiangting = this.xiangting(this._shoupai); /* 立直者がいて自分がノー聴の場合は槓しない */ if (this._lizhi.filter(function(x){return x}).length > 0 && n_xiangting > 0) return;
大明槓
Majiang.Player.prototype.select_fulou()
の内部関数 check_xiangting()
に以下の判断を追加した。
/* 大明槓していいのは既に槓子が2つ以上ある場合のみ */ if (shoupai._fulou.filter(function(mm){ return mm.match(/^[mpsz](\d)\1\1.*\1.*$/)}).length >= 2) { return m; }
対戦結果
上記の調整を行った思考ルーチンと ver.0.5 の思考ルーチンを対戦させてみる。ver.0.5 の思考ルーチン4名(鳴きなし)のみで対戦した場合と、今回の改良した1名(鳴きあり)を加えた場合で成績を比較した。
ver.0.5 | 鳴きあり | ver.0.5 | 鳴きあり | ||
---|---|---|---|---|---|
対戦数 | 1,000 | 1,000 | 総局数 | 10,427 | 10,444 |
1位率 | .236 | .300 | 和了率 | .157 | .224 |
2位率 | .283 | .243 | 放銃率 | .071 | .081 |
3位率 | .247 | .230 | 立直率 | .356 | .286 |
4位率 | .234 | .227 | 副露率 | .000 | .238 |
平均順位 | 2.48 | 2.38 | 平均打点 | 7,384 | 5,616 |
和了率が大幅にアップしたが放銃率は大きく悪化しなかった*2、平均順位の 2.38 は成果が出たと言ってよいと思う。副露率は 23.8% だが、これは 30% くらいまでは増やしたいところ。
次に和了役の統計を示す。
和了役 | 出現回数 | 出現率 | 和了役 | 出現回数 | 出現率 | |
---|---|---|---|---|---|---|
ドラ | 1,147 | 49.10% | 断幺九 | 463 | 19.82% | |
赤ドラ | 1,111 | 47.56% | 一盃口 | 61 | 2.61% | |
裏ドラ | 574 | 24.57% | 三色同順 | 40 | 1.71% | |
立直 | 1,311 | 56.12% | 一気通貫 | 15 | 0.64% | |
ダブル立直 | 6 | 0.26% | 七対子 | 100 | 4.28% | |
一発 | 251 | 10.74% | 対々和 | 0 | 0.00% | |
門前清自摸和 | 724 | 30.99% | 混一色 | 8 | 0.34% | |
翻牌 | 869 | 37.20% | 清一色 | 2 | 0.09% | |
平和 | 341 | 14.60% |
オンライン対戦麻雀 天鳳 / ランキング によると翻牌の出現率は40%超、断幺九は22%超だが、それに近いレベルまで仕掛けることはできたようだ。ただし対々和と混一色については期待した効果がでなかった。この2役は「向聴数を減らす」方向で手を進めても完成しないからと思われる。この点については今後改良したい。