連載モノ 八連荘

飽きてきたので一気に終わらせるぞ


えてさて学習データでTreeができたとする!
捨て牌情報を与えれば聴牌確率とその待ちの確率がわかるものだ!

さぁどう計算したものか


待ちが読み切れれば結構振らないものです。
基本は両面待ちと読んで2万が落ちてれば3-6万が怪しいななんて至って普通の読みです。
ただ、なんかシャボっぽいなーと思えば3万を見て12-4万あたりがあやすぃ・・・とか

今、このTreeを使えば聴牌形の確率が出てくるのでこの経験的か理論的かはよくわかりませんが*1この捨て牌と危険牌の関係を数式化してやれば、全ての牌の危険率がでてくるはずです


てなわけで捨て牌を4×9の行列にMapします。横を種類、縦を数字にしましょう。
字牌の分はあまるので適当に0にでもしておきましょう。
つまりはp_{i,j}は種類iのj番目の牌の出現数に相当します。
p_{i,j}が出現して両面待ち確率がP(r)の時、牌の危険率d_{i,j}
d_{i,j-4},d_{i,j-1},d_{i,j+1},d_{i,j+4} = p_{i,j} \times P(r)となります。
数式として汚いですがTeX記法でうまいこと行列を書く方法を忘れてしまいました=w=;


まぁ言わんとしたいことをわかってもらえばそれでよいのです。


この計算は簡単にできるのであまり気にしなくていいと思います。
ただ、たとえば河に4枚落ちてるとかそーいう奇抜な情報までは考慮していません。
この辺の捨て牌と危険牌の関係Rあたりをどういう風な関数にしておくかを決めておくと
CPUのキャラごとの強さとかにできて存外面白いのではないでしょうか


さて、長々とつまらない文を書いてきて感想

プログラムはこんなのができたよーと現物を見せてそれで喜ぶものだ。
アルゴリズムだけ話しても机上の空論でしかないし、面白くない。

モウヤラネ
終わり

*1:早いリーチは1-4ソーとかは経験的・・・てか根拠なしw