*All archives* |  *Admin*

<<09  2017/10  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31  11>>
全ツ型四人麻雀計算機その2・他家から切られる率とランダム捨て牌生成
まずはパラメータ取りの作業から。
絶対に必要になるのが他家からある牌が切られる確率です。

分類は、
・巡目
・リーチ者の有無(リーチ者ありなら切り順の他家は不聴であるとする。)
・牌の種類
・自分の手持ち枚数
・自分から見えてる枚数
・(リーチ者ありの時)その牌がリーチ者の現物か筋か無筋か

最低限、この程度の分類は必要でしょう。

それで昨晩、牌譜解析プログラムを動かしてパラメータを採取しました。
毎巡目に37種類の牌を逐一チェックする系なので、データが出るのに丸一日かかっちゃいましたね。まぁ一週間とかかかった一向聴の解析に比べれば待ち時間のイライラ度合いはそれほどでもないですが。

↓がリーチ者なし
161110-01.png
特に序盤は19字牌が出る確率が高いという感じだと思います。

↓こちらがリーチ者あり(モロひっかけと両筋が逆の数字になってるので読み替えてください。分類が1次元増えて、全データ量がものすごく膨大になってますが。)
161110-02.png
大雑把に言えば、現物や筋は出やすい、無筋は出にくい、19牌は無筋でもそこそこ出やすい、くらいですかね。

このパラメータを使って最初に作ったのが捨て牌のランダム生成関数です。入力作業を楽にするために作りました。使い道としては捨て牌状況がない平面図で仮に捨て牌を生成してシミュレーションするためというくらいです。

「ランダム」というのは乱数を使うという意味で、すべての牌が等確率で切られるという意味ではないです。さきほどの切られる確率のパラメータを使用します。
ただし、このパラメータをそのままの数値で使うと37種類の牌の切られる確率の合計がちょうど1にならないので、各牌の切られる確率を合計確率で割って、合計確率がちょうど1になるように調整をしています。(厳密にはこの作業をしても割り算が丸め誤差によってぴったり正確にならない(小数点10桁とかのレベルで)ので、さらに余ったor足らない確率は1mが切られる確率に加減して調整させています。)

初期の見えてる枚数は現在の自分の手牌+ツモ牌の14枚として、親から順番に現在巡目-1になるまで1枚ずつ捨てていって(切った牌は見えてる枚数+1枚する。)、最後に各人の捨て牌を表示させるという簡単なものです。

ただ、この方式だと自分の有効牌が捨て牌として選択されてフリテンになってしまうということが往々にして起こり得るので、
まぁその辺はもう一回生成し直すとかフリテンの可能性になる牌だけ都度、別の牌に書き換えるとかてきとうに対処します。

という注意点のもと、何パターンか生成してみました。
161110-03.png
なんとなく序盤は19字牌が中心でだんだん中張牌が増えていくというオーソドックスな捨て牌っぽく見えます。

5枚目の牌が出現するみたいなやばいバグは今のところは出てないです。

切られる率の内部変数はこんな感じ。
161110-04.png
1巡目は3種類のオタ風が切られる確率が45%ととても高いです。その分中張牌がとても少ないと。

そこから5巡の間に19字牌を中心にばらばらーと切られて、6巡目になったら切れてない中張牌でも一けたパーセントくらいまで切られる率が増えています。


今のところシミュレーションの方は外側のハリボテだけ作りました。具体的な中身を書くのはこれからです。
まずは一番簡単な、自分は他家からロンできる・他家がリーチをする・他家がリーチ後上がる、のパターンだけで作ってみようと思います。もちろん最初なので鳴きは自分・他家ともに考慮しません。
局収支シミュレーションのコードを流用しつつ、うまく作れるといいですね。パラメータを移植するだけでもけっこうな手間になりそうですが。
スポンサーサイト

コメントの投稿

Secret
(非公開コメント受付中)

コメント

プロフィール

nisi5028

Author:nisi5028
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
フリーエリア
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード