まうじゃんという麻雀環境シミュレータ(?)の自動打ちプラグインの作り方 for Java.
Dummy K.I.というサンプルがある.
対戦してみると分かるのだが棒聴即リーという感じのルーチンだ.
軽く
ソースを見てみると,面子だと+18,両面だと+12,嵌張だと+4+残り枚数,辺張だと+4,1つ目の対子は+12,2つ目以降の対子は+6,さらに余り牌では(可視枚数が2未満の役牌なら1+ドラなら1+数牌なら1)*持っている枚数,と手牌に評価値を与えている.
さらに各手牌の危険度の評価値を,完全安牌なら+4(3人の共通安牌なら+12),数牌で筋なら+3,それ以外でも立直が無ければ+2,としている.
そして,一枚抜いた手牌の評価値とその抜いた牌の安全評価値の合計が最大になる牌を切るようになっている.
立直の判断は,まず待ちが生きていることを条件とし,残り枚数が61以上なら無条件に立直,役なし聴牌なら立直,となっている.
意外と降りも考慮していることが分かる.
が,あまりにも危険度に関する評価値が低いので殆ど全ツッパに近い印象を受ける.
Dummy K.I.を3人入れて対戦してみると分かるが,お互いが振り合うので自分が振らずチャンスで普通に和了れば2位以上は堅い.
が,面白いのはコンピュータのくせにバカヅキモードになったりすることだ.
なんせ,役なし嵌張立直を2連続一発自摸和とかやるからね.
こうなると手に負えない.
けどこうやってアルゴリズムを丸裸にしてしまうとかなり勝率は上がる気がする.
序盤以降の立直は役なしで愚形が多いとか分かるわけだし,役も狙わないので手は基本的に安いし.
では,何が最も強いアルゴリズムか?
と言えば公開されても対処法がない,つまり真似してフィフティーフィフティーに持っていくしか手がないものだろう.
例えば,じゃんけんで言えば1:1:1の比率で出すことだし,(繰り返しの)囚人のジレンマならしっぺ返し戦略だ.
では麻雀だと?
んなこと知るか!!
っていつもの話に逆戻りです.
とりあえず下のゲーム理論のサイトでも読もう.