*All archives* |  *Admin*

<<07  2017/08  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  09>>
レポート2「ベタ降りの挙動」その1
先日凸さんと少し話しをしたのですが、どうも前回、前々回に書いたことはどうも壮大すぎた野望だった模様。「手近にあるものから手をつけたら?」とのアドバイスをいただき、目をつけたのは「ベタ降りの挙動」。要はベタ降り可能性とかをもうちょい突っ込んで考えることをやってみます。

難しい問題を除けば、下地が出来ていたので、多少強引な方法をとることで、ベタ降り者の挙動を見ることができるシミュレーションができました。

今回は初回版ということで、多少納得いかない結果も出てますが、ちょっとずつバージョンアップして現実に近い(適用可能なもの)に仕上げていきたいです。

シミュの大まかな仮定は次のとおり(詳しい仮定はこの記事の一番下に)

・リーチ者の位置及び先制リーチの順目を最初に固定しておく。(今回の場合、西家の10順目リーチ)
・麻雀を始める前にリーチ者の待ちを固定。(実戦に準拠。詳細は後で)
・多少補正を加え、配牌。(同上)
・リーチ前までは全員が「順子無視牌効率」に従い、打牌させる。
・リーチ後は、リーチ者はツモ牌が和了牌なら和了、そうでなければツモ切り。他家は最も安全な牌を切る。それが和了牌ならロン。
・この一連の麻雀1局分を10000回繰り返す。

まず、待ちを決めるために(母集団が少ないですが)実戦の待ち分布を使ったのでそれを載せておきます。

先制リーチ5404回のうち、
両面 3489 64.5%
カン28 236 4.4%
カン37 271 5.0%
カン456 225 4.2%
ペン37 236 4.4%
数数シャボ 355 6.6%
数字シャボ 239 4.4%
字字シャボ 29 0.5%
数単騎 174 3.2%
字単騎 150 2.8%

この確率に従い、待ちを決めました。

シミュレーション結果は以下のとおり
rep02-02.png

ぱっと見で字牌がらみの待ちの和了率の高さがうかがえます。両面を大きく上回っています。特に他家からのロンが他と比べて雲泥の差です。和了時ツモ率もすこぶる低い。守るほうからすれば字牌待ちって嫌ですね(笑)。(ただ字牌待ちの発生率が低いため、シナリオ発生回数が少なくどこまで信用できるかは?)

そしてカン2378とカン456の間に和了率で8%の差(ほぼ2/3)が出ています(主に他家からロンが少ないため)。今回はスジ引っ掛けとかの条件は特に加えてないので、カン456がスジになりにくい分、(両スジ456がスジ2378より先に切られるとはいえ)他家からはかなり出にくいということなんでしょう。

ちょっと不本意なのは、両面と数数シャボの和了率に大した差が出てないことです。ツモ上がり率に対して単純な枚数で2倍の差がある両面待ち、枚数同じのカンチャン待ちと数数シャボ待ちとの差がどっちも同程度の8%しかないのはちょっとあんまりです。そのせいで全体和了率で3%差しかないのはちょっと間違ってる雰囲気出まくってますわ。
多分原因は、下で書くようにシャボには補正を加えているが、両面にはノータッチだったためか。両面にもうまい補正を考えてあげる必要があるかな。

後、ペン37とカン37になぜか5%というでかい和了率の差が出てしまっている・・・。待ち構成牌が12か24かの違いしかないはずなんだが。シナリオ発生回数が共に500回弱と小さいためかなぁ。試行回数増やしても変わらなかったらマジで原因が分からん。

他に考えられる修正点、及び検討課題
・両面以外は生起確率が低いので、十分な数のシミュレーションがとれていない。待ちごとに別々に10000回シミュをして後からくっつけるほうが得策か。
・10順目西家リーチに限定せず他の順目とかでも同様にやる。これは簡単だが、計算時間がいっぱいかかるんだろうなぁ。
・悪形待ちのとき、リーチ時にスジ引っ掛けになってるときとそうでない場合に分けて集計してみる。これも簡単でしかも計算時間はそんなに増えそうにない。次回は確実にやる。
(最重要検討課題)
・リーチ時の他家の現物枚数別に集計してみる。今回はそのことは無条件なので、現物0枚から無理やり降りてるかわいそうな状況もあった。一般に降りる人は最低1枚、普通は2枚くらい現物がないとベタ降りにはいけないだろうから今回の上がり時ツモ率73%という低い結果にはならないであろう。これも多分そんなに難しくない。
・レポ1でやった机上計算との比較。まだあんまし考えてない。

ただ、両面とシャボの関係はしっかり吟味しないと後々響くからしっかりやっておかねば。


最後にこのシミュレーションの細かい仮定を書いておきます。シミュの仮定は重要ですが、条件の羅列になるのは目に見えてるので、「細かいことなんてどーでもええわ」っていう人がとばして読んでしまうのはまぁしかたがない。

○待ちの確定について
上に書いたような10区分の待ちについて、上で設定した確率分布に従いまず待ち区分をランダムに決める。その後、それぞれの待ち区分の中で等確率でランダムに具体的な待ちを決定する。(36m両面、1p2sシャボ待ちとか)

○配牌
基本的には4人に13枚ずつランダムに牌を配っていく。ただし、リーチ者に対しては先に待ちの構成牌を確定で配っておく(36m両面なら45m1枚づつ、1p2sシャボなら1p2s2枚づつとか)。さらに待ちがシャボ待ちor単騎待ちのときは待ちの性質上、待ち牌をリーチ前にツモってしまうと待ちになりえなくなってしまってまずいので、牌を配っていくときにリーチ者に待ち牌が配られてしまうときはその前に山をシャッフルしてしまう。これはリーチ前のツモについても同様。

○「順子無視牌効率」
リーチ前の打牌について。ツモ後の手牌14枚のそれぞれに対し、以下のような数字をつける。
・ツモ牌がすでに捨てられていたら無条件でツモ切り。
・その牌の種類に応じ、456→0.017、37→0.02、28→0.028、19→0.039、字牌→0.046(これらの数字はレポート1のとき定義した切りやすさ指数k_iである)。
・その牌がすでに捨てられていた場合、数字を5倍する(5に特に根拠はない)。
・その牌が対子のとき、ただひとつの対子なら0、2組あるうちのひとつなら1/12倍、3組以上あるうちのひとつなら1/4倍にする(1/12と1/4に特に根拠はない、唯一の頭を落とすことはほぼ無いからそのときは切る確率0とした)。
・その牌が暗刻のとき、0とする。(暗刻は無攻撃時にはまず切られない)
・その牌がカンツ(4枚使い)のとき1/4倍する。(4枚あるためトータルで単独牌と同じ扱い。鳴き(カン)を考えないため浮き牌扱いとした。)
・リーチ者の場合、その牌が待ち構成牌のとき0とする。(リーチ時に手牌に残すため必然)

これらの数字について重みをつけてランダムに打牌する牌を決め、捨てさせる。

○安全な牌の基準
リーチ者の現物(=リーチ者の捨て牌+リーチ後に切られた牌)のみを基準にする。現物→字牌スジ19456→スジ28→スジ37→片無筋→両無筋の優先順で切っていく。同ランクでは自分の手牌で暗刻→対子→単独牌の優先順とする。その他の要素(ノーチャンスワンチャンス、序順捨て牌の外側など)は勘案していない。


こうしたらもっとよくなるんちゃうん?みたいな提案大歓迎!!
スポンサーサイト

コメントの投稿

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

コメント

No title
 これはおもしろそうな結果だと思います。
 なんか私もシミュレーション研究をやりたくなってきました。

 ところで、一つ質問させてください。
 ここで発表された結果の引用ってOKですか?
 もちろん、その際には引用であることの表示などはしますが、、、。

 お手数をおかけしますが、ご返答いただければ幸いです。
 では。
Re: No title
引用OKですよ~

ただ、この6月9日の記事に関しては微妙に納得のいってない結果なので、もうちょっと仮定を改良してこれから出すであろう結果について引用してくださるとなおうれしいです。
プロフィール

nisi5028

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

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

この人とブロともになる

QRコード
QRコード