*All archives* |  *Admin*

<<05  2017/06  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  07>>
聴牌打牌と放銃率
ツイッターで聴牌打牌で放銃率が上がる現象について調べてくれ、という質問があったので、今回はそれを調べてみます。

牌譜解析の集計条件は、
・自分以外の3人のうち一人がリーチしている(他二人はリーチでなければ他の状態は問わない)
・自分は聴牌している。
・自分が牌を切った時に分母にプラス1、そのときにロンの声がかかった(立直者以外からのロンも含む)時に分子にプラス1
・分類は巡目と牌区分(対象は一人いる立直者に対して)と自分が前巡の段階ですでに聴牌しているか否か

結果がこちら。
170509-01.png
全部の牌トータルで見ると、前巡で既に聴牌している場合より、前巡は不聴(つまり聴牌打牌)の場合の方が放銃率はやや高い傾向にあるようです。
なので、張った瞬間に当たり牌になりやすいというのはある意味正しいです。

しかし、それぞれの牌の区分ごとで言うとすでに聴牌のケースも聴牌打牌のケースもほとんど変わらないので、
同じ無筋同士なら、特別聴牌打牌の方が当たりやすいとは言えないです。

おそらくは、聴牌打牌の方がリーチ者の無筋(危険牌)になってるケースが多い(全体から見た割合が多い)ため、個々では放銃率が変わらなくても、トータルでの放銃率が上がる、とかそんな感じでしょうか。

このテーマはこんなところにして、後は雑談。

1週間くらい前から1日1問ツイッターで押し引きを中心に何切る問題を出して、シミュレーション結果を正解として出していますが、そこそこ好評いただいているようです。フォロワー数も順調に伸びつつあります。
まぁ、見た目地味な研究よりはみんな実際の何切るの方が好きなんだろうなーとは思います。(別にそれが悪いと言いたいわけではないです。)
でも、今シミュレーション結果が手軽に出せるのも、基礎研究の積み上げのたまものなので、まぁそういう背景もあるということでひとつ。

後は(シミュレーション結果を正答としたときの)みなさんの正解率がかなり高いのはすごいですね。こちらとしては多数派とシミュレーション結果が一致しているということはそれなりにみなさんの感覚と適合しているということだと思うので、一安心です。

今問題の正答用に使っている局収支シミュレーションだとある程度の制約があります。
・基本的に二向聴以上の手はできない。
・変化を考えるのは少し手間がかかる。(日1で次々出題することを考えると、あまり手間はかけたくない)
・他家の打点はかなり大雑把(赤ドラの所在は考えてるけど、表ドラは平均のパラメータの中に全部押し込めてる。)
・聴牌気配の濃さ薄さ(特にダマテン)についてはあまり考えられない。(これも平均値そのまま。)
こういう制約に引っかからないような状況を問題として選んでいます。
次世代のシミュレータができたらこういう制約(特に前者2点)はなくなって、作問の幅と質が大幅に広がるのですが、やるには頑張って基礎研究しないといけないですね。
基礎研究の間はブログの記事は単調になりがちですが、その分を毎日の何切る出題で補えばまぁ研究サボってる感はあまりでないかなーとか思ってます。(むしろ両方ともやるので相当頑張ってる方。まぁ何切るの方は出来合いのシミュレータにパパッと入力値放り込んで10秒くらい待つだけなんでそっちはそんなに難しくない。むしろペイントとかエクセルで加工する方が時間かかるくらい。)

後はちょっと前までは技術的な問題でfloodgate for mahjongに接続することができなかったのですが、その問題がクリアできて無事接続できたので、もうそろそろAI作り(≒次世代シミュレータ)に取り掛かろうかなーと思って、今日ひさしぶりにプログラムを開いて、コードをちょっといじりました。
スタックオーバーフローのエラー回避のために全体的にコードを書きなおさないといけないのですが、まぁ宣言している変数の数が無駄に多いこと多いこと。スタックの自己管理のためにほとんどすべての変数をまるごとスタックに詰め込んでは取り出しての繰り返し、みたいな感じでとっても大変です。
スタックの自己管理にあたって、私にとっては新技術となるクラスの宣言というのをやっています。今まで自作クラスを全く作らずにやってきたというのもある意味すごい話だけど、今回そこは避けて通れなさそうです。まだ作りかけだけど、その部分がうまくいくかどうかが気が気でないです。またどうせ、大量のバグ祭りになるんだろうなぁと思うとちょっとゆううつ。

クラスの宣言と言えば、floodgate for mahjongのツモ切りプレイヤーのサンプルプログラムを見て活用しようとしたけど、たくさんのクラスとかコンストラクタ?みたいなのとかポインタ?とか、わたしのおつむではわかりませんのー、みたいな感じで撤退したりとか。まじでプログラミングスキル低いわーみたいなのですね。他の人が作った高尚なプログラムが理解できず、自作のおもちゃしか扱えないかわいそうな子です。

自作のおもちゃと言えば、(たぶん)高速シャンテン計算関数(笑)とか公開したら誰か使う人いるかな?
AI製作にあたってグローバル変数を極力使わないで、単純に引数渡しの戻り値返しの単純なシャンテン計算関数はできてるから一応、その部分だけ切り取ってお見せするとかはできるけど。まぁ、手牌とか鳴き牌とかのパラメータ指定の方法がくせがあるだろうから、他の人は使いにくい可能性はかなり大きいけど。
まぁ、たまにはスキルの自慢もしてみたい(プログラミングスキル低いわーと言ったとたんこの発言なので、とても支離滅裂感あるけど。)のと、将来の麻雀研究者が参入してきやすいみたいな高尚っぽい名目も添えて。たまには麻雀界に貢献?でもしてみようか。めっちゃ上から目線だけど。

ぐだぐだ書くのはこの辺にしておきましょう。では今回はこんなところで。
三元牌が切られた巡目と被ポン率
前回(三元牌が切られた巡目と山残り枚数の関係)に引き続き、最序盤の字牌の比較の話です。

今回は防御面についての話で、どの順番で牌を切ったら他家にポンされにくいかということを考えます。

条件は
・全員非リーチ面前。
・n巡目に1枚切れ(切れている巡目m巡目)1枚持ちの三元牌を切った時、分母に+1
・その時、誰かからポンされたら分子に+1

つまり、動きがない状態で1枚切れ1枚持ちの三元牌を切った時のポンされる確率です。
(今回はドラ表示牌で1枚見えてるケースは除きました。)

170506-01.png
表の見方は前回とほぼ同じ(行がn、列がm)です。

前回の例でも出した、3巡目に白と発を1枚ずつ持っていて、白が第一打、発が2巡目に切れてるケースを考えてみます。
このときに3巡目打白→4巡目打発と切るのか、3巡目打発→4巡目打白と切るのか、ポンされる確率がどちらが低くなるかを考えます。

前者は白と発、両方とも他家に重ねられる猶予が1順だけあるのでポンされる確率はどちらも中程度です。
具体的なポン率の数値だと、白はn=3、m=1で1.38%、発はn=4、m=2で1.45%で合わせて2.84%です。

後者は発は直前に切られているので、ほぼポンされない一方、白は2巡、他家に重ねられる猶予を与えるので、ポンされる確率は小+大です。
具体的なポン率の数値だと、白はn=4、m=1で1.96%、発はn=3、m=2で0.85%で合わせて2.81%です。

その差は0.03%だけ発→白の順番の方がポンされる確率はわずかに低くなります。
この数値の差がほぼ無視できる差ととらえるか、微差でも一応は差として存在するととらえるかが問題です。

サンプル数は10万~20万くらいで標準偏差√(p×(1-p)/n)を取ると、0.03%くらいか。
というわけで、0.03%は2σより小さいので、この差が出たのはたまたまである(統計的に有意差であるとは言えない)ということにしておきます。(いかにもあやしげな論理ではあるが。)

自分で重ねる狙いにしても、他家のポンを防ぐ狙いにしても、今回はあんまり差が大きくなくてしっかりとした結論は出せない感じです。
三元牌が切られた巡目と山残り枚数の関係
今回は字牌(三元牌)の切られた巡目と山に実際に残ってる枚数を見てみます。

最序盤でよくある風景として、1,2巡目はオタ風端牌を処理して、3巡目くらいに白と発を1枚ずつもっている、
他の人の捨て牌を見ると白は1巡目に切られているが、発は2巡目に切られている、
さて、どちらを残そうか、という問題。

攻撃面を考えるなら山に残ってそうな方を残したいですよね。
というわけで、「自分のn巡目のツモ番において」「1枚切れ1枚持ちの三元牌について」「該当する三元牌が他家からm巡目に切られている」という条件で山に実際に残ってる枚数を牌譜解析で調べようと思います。
なお、集計の都合上、ドラ表示牌でめくれてる場合は1巡目に切られたものとして扱います。

170503-01.png
横ラインがn(自分のツモ巡目)で、縦ラインがm(他家が切った巡目)です。

例えば自分が3巡目のツモ番において、1巡目に切れている三元牌が山に残ってる枚数は1.616枚で、2巡目に切れている三元牌が山に残ってる枚数は1.646枚です。(サンプル数は100万くらいあるので、たぶん十分)
なので、直近で切られた方を残す(冒頭の例なら発を残す)とよいでしょう。
1巡目に切られた方(冒頭の例で白)は3巡目が回ってくるまでに重ねられている可能性が高いということかと思います。

一方、自分5巡目については第一打三元牌は1.670枚、2巡目三元牌は1.741枚、4巡目三元牌は1.710枚で、
2巡目にピークがあります。2~3巡目くらいだと、もし他の人がその三元牌を1枚だけ持っていたら、1枚切れ三元牌が出てきやすい巡目であるが、2枚目以降が3巡目以降に顔を出さないということはその可能性が低くなる、
逆に4巡目三元牌切りなら生牌三元牌は2~3巡目くらいでも温存されることが多く、4巡目に1枚目が切られた後に他の2者のツモ順が回ってくる前に自分の5巡目が回ってきた場合は、まだ他2者に孤立で手残りしてるケースがある(山にいる枚数が少ない)ということだろうと推測されます。(このへんは他家との位置関係も絡んできそうですが。)

いろいろ考えるのがめんどくさければ「2巡目に切れてる三元牌を優先して残す」でもいいかと思います。
字牌単騎リーチの待ち牌種類別和了率
昨日のこの記事(上がりやすさと裏ドラ効率(七対子編))で、
ちょろっとダブ東単騎と白単騎で和了率はどの程度違う?という話題を出したのですが、
ちょっと引っかかったので、実際に牌譜解析で調べてみます。

条件は
・一人目のリーチ(準先制リーチ。副露やダマ聴牌は考慮しない。)
・字牌単騎待ちである。

分類は
・風牌4種と三元牌はひとまとめにして、合計5種
・東場か南場か
・先制立直者の風
・リーチ巡目
です。
東場の場合。
170502-01.png
サンプル数がかなり少ない(各分類ごとに200~300程度しかない。)ので、かなりグラフの形状ががたがたしてます。
和了率のグラフをぼーっと眺めると、東待ちはやや上がりにくそう、南西北待ちはやや上がりやすそうっぽく見えますが。

200試合の標準偏差だと√(p×(1-p)÷n)で約3.5%、2σだと7%か。
東場東家の東単騎と他の風牌単騎の間なら7%以上の差のところが多いので、統計的に有意差が出そう。
他はそこまでの差はなさそうか。

このデータは枚数で分けてない(もしくは同枚数でそろえるみたいなのはしてない)ので、データの質としてはあんまりよろしくないです。
東は場に出にくいので生牌である可能性が高いとか、北は場に出やすいかつあまりに多く出すぎると単騎待ちリーチされないので1枚切れのケースが多いみたいなのはあるかもしれません。
見えてる枚数の分布的な事情で北待ちが高めの和了率に出やすいかもしれません。
ただ、かなり条件を緩めにしてもサンプル数2~300ですからね…。これ以上分類を増やすことはあまり生産的ではないでしょうね。

南場の場合。
170502-02.png
サンプル数は東場の半分くらいしかないので、もっとグラフがカクカクしてます。
これではとてもじゃないけど、いい結論は出ないでしょうね。

まぁデータが足らないんじゃ、しょうがないです。
残りスジ本数と安全無筋・危険無筋の放銃率
前回(巡目と残りスジ本数の対比)の改良版です。

前回は通ってないスジが何本あるかをカウントしていましたが、同じ「通ってないスジ」の中でも危険度の濃淡はあります。
そこで今回は「通ってないスジ」について、安全そうに見える無筋(以下、「安全無筋」)と危険そうに見える無筋(以下、「危険無筋」)の2つに分けて、残りスジ本数とか放銃率を見ていくことにします。

具体的な定義はこんな感じです。
・ノーチャンス→両筋扱い(通ってないスジにカウントしない)とする。
・リーチ宣言より前に切られた牌のまたぎ筋(リーチ宣言牌は対象から除く)→「安全無筋」
・ワンチャンス(牌を切った人から見て)→「安全無筋」

逆にこれらに当てはまらない通ってないスジはすべて「危険無筋」に分類します。

この仮定のもとで、前回と同じく通ってない筋の本数と「危険無筋」の本数をカウントします。
170411-03.png
前回からノーチャンスを除いた影響で通ってないスジ本数は少し減っています。

「危険無筋」の本数は9巡目で8本(逆に「安全無筋」が2.5本。)
14巡目だと4.2本まで減るので、平均的なケースでもかなり待ちが絞れてくる印象です。

次にリーチ者に対して牌を切った時の放銃率について、「安全無筋」と「危険無筋」に分けてチェックします。

まずは「通ってないスジ本数」を縦軸にした場合。
片無筋についてから見てみます。(分量が多いのでサムネイル表示に。)
170411-04.png
「安全無筋」28牌だと9巡目4.0%、14巡目7.0%、18巡目11.1%。終盤だとワンチャンスが信用できないとかの兼ね合いで、わりと危険度は順調に上がっていきます。
「危険無筋」28牌だと9巡目9.9%、14巡目15.2%、18巡目20.6%。だいたい安全無筋の2倍くらいです。特に終盤以降の危険無筋は15%を超えてくるので、両無筋と同レベルとして扱った方がいいのかもしれません。

続いて、両無筋について。両側について判定するので、両側ともに「安全無筋」の場合(以下、「安+安」)、片側は「安全無筋」だがもう片方が「危険無筋」の場合(以下、「安+危」)、両側ともに「危険無筋」の場合(以下、「危+危」)の3パターンに分けて調べます。
170411-05.png
「安+安」46牌の9巡目6.7%、14巡目12.7%、18巡目18%。危険片無筋よりは数値は低めになっています。安牌がなく、字牌・筋もない場合は同条件なら危険片無筋より、「安+安」を先に切る、というセオリーができるかもしれません。
「安+危」46牌の9巡目12.1%、14巡目19.4%、18巡目27.4%。特に流局間際だと4回に1回当たるので、かなり重たいです。
「危+危」46牌の9巡目15.7%、14巡目23.8%、18巡目31.8%。9巡目の時点で相当重く、流局間際はもはや両無筋456とひとくくりにはできないレベルにまでなっています。超危険牌とでも形容しておこうか。


ここまでは縦軸を通ってないスジ本数としていましたが、次は「危険無筋」の本数(「安全無筋」の本数を除く)を縦軸にして同様に調べてみます。
170411-06.png
「危険無筋」28牌の14巡目で危険無筋残り2本で20.0%、残り4本で16.4%、残り6本で13.8%。
「危+危」46牌の14巡目で危険無筋残り2本で39.9%、残り4本で28.7%、残り6本で23.3%。ほぼ1点読みできるとき(残り「危険無筋」2本)のど本命が当たるのは5回に2回。このレベルの牌を切れる状況は相当限定されそうです。
プロフィール

nisi5028

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

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

この人とブロともになる

QRコード
QRコード