FC2ブログ

*All archives* |  *Admin*

<<06  2018/07  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  08>>
山にいる枚数別、先制リーチVS追いかけリーチの勝敗
AIの改修作業をするやる気がなかなか出ないため、単発の牌譜解析でお茶を濁す今日この頃。

今日のテーマは「2軒リーチ時、山にいる当たり牌の枚数が分かってる時の両者の勝率」です。

リアル麻雀の解説なんかで、「25pは山に3枚、カン3sは山に2枚、3対2ですね。」なんて話はよく聞くような感じがします。
実際に山にいる枚数が少ない方が勝つ確率がどの程度あるのか、というのが気になったので調べてみました。

牌譜解析の条件は次の通り
・2軒目のリーチがかかった瞬間を起点とする。
・他二人はリーチではないがそれ以外の状態(非リーチ門前・副露)は不問とする。
・追いかけリーチの宣言牌で放銃になったケースは除く。
・起点における巡目と、先制リーチ者と追いかけリーチ者の山にある当たり牌の枚数で分類して、その局結果(和了者と放銃者)を調べる。
・筋待ちや字牌待ちは特に分類しない。

↓結果がこちら(データ量が多いのでサムネイル表示)
180730-01.png
180730-02.png

データの内容的にはこれで十分ですが、これだとよくわからんので、9巡目に限定して、先制と追いかけの和了率を表にまとめたのがこちら↓。(ただし、データ数100件未満のところはエラー値扱いにして除外した。)

180730-03.png
180730-04.png

例えば追いかけリーチ巡目が9巡目で、先制が山3、追いかけが山4のケースだと、先制リーチ者の和了率は37.6%、追いかけリーチ者の和了率は52.7%です。
流局分とリーチ者以外の他家和了分を除けば、なんとなく、勝率は7分の3と7分の4に近いように見えなくはない…かも。

山4同士対決だと、先制が43.0%で、追いかけが48.5%。なぜか追いかけの方がアガリ率が高い。
理由はよくわからないです。
追いかけリーチの宣言牌が通った前提でスタートするので、順番的に、先制者ツモ和了番→先制者から追いかけへの放銃番→追いかけ者のツモ和了番→追いかけから先制への放銃番なので、明らかに追いかけ側が有利に働くような要素が見当たらないのだが…。

山4VS山3だと、先制が50.5%、追いかけが40.0%。山3VS山4と比較しても追いかけ側がやはり有利なよう。理由は不明ですが。

右の方で和了率(高さ)、先制者当たり牌枚数(手前軸)、追いかけ者当たり牌枚数(奥行軸)で等高線グラフを描いてみました。
結論、3次元なんでよくわからん。


先制和了率÷追いかけ和了率の比率を取ってみたのが、こちら↓。
180730-05.png
はたしてこれが意味がある数値なのかどうかはよくわからないが。


実際は字牌や筋待ちなどで、両脇からの出上がりできる程度や、3軒目が押してくるかどうか、もかかわってくるとは思いますが、
いちおう今回の数値を押さえておけば、エンタメ的に、「先制山3が追いかけ山4に勝った→37.6%側の事象が起きた→半々よりは少ないけどまぁあり得なくはないか」みたいな楽しみ方ができるかもしれないですね。
スポンサーサイト



麻雀AI開発その86・シミュレーションの改造(枚数を赤ナシベースに)
発端となったのは7月15日分のツイッターのお題。




黒5sと赤5sの放銃率が違う原因として、
黒5と赤5を別個の牌としてAI内のシミュレーションで扱っていて、
その中でも切る牌の他家への放銃率について、
5牌以外は4枚中何枚見えてるか何枚持っているかで分類してパラメータを取っています。
5牌については黒と赤を別個の牌としてとらえていたので、
黒5牌が3枚中何枚見えてるか何枚持っているか、赤5牌が1枚中何枚見えてるか何枚持っているか、というパラメータになっていたのが問題でした。

放銃率に関しては、黒5も赤5も同一視して5牌以外同様4枚中何枚でカウントした方がいいというように判断しました。

…と、ここまではいいのですが、関連するパラメータやプログラムの変更箇所が多くて作業は難航しています。

取るべきor取ろうとしているパラメータの種類

・見えてる牌手持ち枚数別、全牌(切り順になったとき、37種の牌すべてに関して走査)対リーチ放銃率
・全牌対リーチドラ放銃倍率
・見えてる牌手持ち枚数別、実切り牌(切り順になったとき、実際に切られた牌のみカウント)対リーチ放銃率
・実切り牌対リーチ切り順者状態別(聴牌or不聴、副露数)放銃倍率
・実切り牌対リーチドラ放銃倍率
・見えてる牌手持ち枚数別対リーチツモ和了率(攻撃者のツモ番時、ツモってきた牌のみカウント)
・対リーチドラツモ和了倍率
(↑ここまでパラメータ取得・プログラム反映完了)

・見えてる牌手持ち枚数別、全牌(切り順になったとき、37種の牌すべてに関して走査)対副露聴牌放銃率
・全牌対副露聴牌ドラ放銃倍率
・見えてる牌手持ち枚数別、実切り牌(切り順になったとき、実際に切られた牌のみカウント)対副露聴牌放銃率
・実切り牌対副露聴牌切り順者状態別(聴牌or不聴、副露数)放銃倍率
・実切り牌対副露聴牌ドラ放銃倍率
・見えてる牌手持ち枚数別対副露聴牌ツモ和了率(攻撃者のツモ番時、ツモってきた牌のみカウント)
・対副露聴牌ドラツモ和了倍率
(↑ここまでパラメータ取得完了、プログラム反映未完了)

・見えてる牌手持ち枚数別、全牌(切り順になったとき、37種の牌すべてに関して走査)対ダマ聴牌放銃率
・全牌対ダマ聴牌ドラ放銃倍率
・見えてる牌手持ち枚数別、実切り牌(切り順になったとき、実際に切られた牌のみカウント)対ダマ聴牌放銃率
・実切り牌対ダマ聴牌切り順者状態別(聴牌or不聴、副露数)放銃倍率
・実切り牌対ダマ聴牌ドラ放銃倍率
・見えてる牌手持ち枚数別対ダマ聴牌ツモ和了率(攻撃者のツモ番時、ツモってきた牌のみカウント)
・対ダマ聴牌ドラツモ和了倍率
(↑まだ手付かず)

1個パラメータを取るのに牌譜解析プログラムをちょこちょこいじりつつ、解析にかかる時間が2~3時間くらいで、とても大変です。
今でちょうど半分くらいの進捗。
赤ありから赤ナシカウントに変えるだけで、だいぶ大掛かりな修正になってます。
パラメータの種類とかプログラムの中身を精査してると、従前のは作り込みが荒くてパラメータの構成変更とかもちょいちょい入れてたりするのも時間がかかってる要因の一つです。まぁしょうがないですが。
配牌が一色に偏る確率
昨日ツイッターに次のような問題を出しました。

問1
中が見えない箱に50個の赤玉と50個の白玉を入れて、そこから無作為に20個を取り出しました。(一度取り出した玉は箱に戻さない。)
このとき、取り出した赤玉と白玉の個数の比率が2倍以上違う(今回は赤玉14個以上か赤玉6個以下)確率で一番近いものは?

問2
14枚の配牌をもらったときにマンズが8枚以上ある確率で一番近いものは?

問3
14枚の配牌をもらったときに一番多い色の枚数+字牌の枚数が10枚以上ある確率で一番近いものは?

最終的には問3の配牌が一色に偏る確率を求めたいわけですが、いきなりこれを解くにはちょっと難しいので、数学の入試問題みたいに簡単な小問から段階を踏んでいくことにします。


問1の解法

確率の定義通り、同様に確からしい場合の数をカウントして、該当する件数から全体の件数で割り算をします。

50個の赤玉と50個の白玉にそれぞれ1~50番と51~100番までの番号をつけて、どの20個の番号を引いてくるかの組み合わせを考えます。

すべての組み合わせの場合の数は100個のうち20個を取る組み合わせの数で100C20です。

次に赤玉がk個である場合の数を数えます。
組み合わせを考えており、取ってくる順番は関係ないので、赤玉k個と白玉20-k個それぞれに分けて考えます。
50個の赤玉からk個を取る組み合わせの数が50Ckで、50個の白玉から20-k個を取る組み合わせの数が50C_{20-k}です。
赤玉の組み合わせ50Ck個のそれぞれ1個の取り方に対して、白玉の取り方50C_{20-k}個が対応しているので、
20個中、赤玉がk個であるすべての組み合わせの数は両者の掛け算で、50Ck×50C_{20-k}となります。
この数え方で、重複も漏れもないことをご確認ください。

赤玉が0個~20個の組み合わせの数のそれぞれの値は下の表のとおりです。
180715-01.png
今回は赤玉が6個以下もしくは14個以上になる確率なので、それらに対応する場合の数を全体(100C50)で割り算することで、
7.84%という答えになります。


問2の解法

100個の玉が136枚の牌に、50個の赤玉がマンズ36枚に、取ってくる玉の数20個が配牌14枚に変わるだけで、考え方は問1と同じです。

すべての組み合わせの数は136C14通り
マンズがk枚である組み合わせの数は36Ck×100C_{14-k}通りです。
180715-02.png
マンズが8枚以上の確率は1.04%です。


問3の解法

今度は字牌の枚数もからんでくるので、複雑さは増しますが、これまでの応用でなんとか計算していきます。

すべての組み合わせの数は問2と同じく136C14です。

14枚の配牌に含まれる字牌の枚数ごとに場合分けをします。
・字牌の枚数が0枚~5枚の場合(字牌の枚数をj枚とする。)
求めるものはマンズが10-j枚以上、もしくはピンズが10-j枚以上、もしくはソーズが10-j枚以上の組み合わせの数です。
ここで「マンズが10-j枚以上」「ピンズが10-j枚以上」「ソーズが10-j枚以上」というそれぞれの事象は排反(同時に成立することがない)になっています。
例えば字牌の枚数が5枚だと、「マンズが5枚以上」であれば残りの数牌は4枚以下なので、「ピンズが5枚以上」「ソーズが5枚以上」は成立することはありません。
これは字牌の枚数が5枚以下ならすべて同様です。

よって、求める組み合わせの数は「字牌がj枚、マンズが10-j枚以上」の組み合わせの数の3倍を取ればよいことになります。

「字牌の枚数がj枚、マンズがk枚」となる組み合わせの数は
字牌については28Cj通り、マンズについては36Ck通り、ピンズソーズについては72C_{14-j-k}通りであり、
字牌の取り方1件とマンズの取り方1件に対して、ピンズソーズの取り方は独立に72C_{14-j-k}通り取れるので、求める組み合わせの数はこれらの掛け算で、28Cj×36Ck×72C_{14-j-k}通りです。
この数え方で重複や漏れがないことをご確認ください。

「一番多い色の枚数+字牌の枚数が10枚以上」に該当する字牌j枚とマンズk枚のパターンは下図の黄色で塗ったところです。これらの和を取って3倍(マンズ、ピンズ、ソーズの3色)して、全体の組み合わせ数である136C14で割ったものが一番右の列になります。

・字牌の枚数が6枚のとき
字牌が6枚、数牌が8枚の取り方は今まで同様、28C6×108C8通りです。
このうち、一番多い色の枚数が4枚以上とならないマンズピンズソーズの枚数のパターンは{3,3,2}、{3,2,3}、{2,3,3}の3パターンのみなので、これらのパターンの組み合わせ数を28C6×108C8から引き算します。
字牌6枚マンズ3枚ピンズ3枚ソーズ2枚の組み合わせ数は28C6×36C3×36C3×36C2通りで、
マンズ2枚のケースとピンズ2枚のケースも同じ数あるので、3倍したものを28C6×108C8から引けばOKです。

・字牌の枚数が7枚以上のとき(字牌の枚数をj枚とする。)
この場合は数牌14-j枚をどのようにマンズピンズソーズに振り分けても必ず「一番多い色の枚数+字牌の枚数が10枚以上」が成立します。
例えば字牌7枚数牌7枚ならマンズピンズソーズの枚数がすべて2枚以下にはならず、必ずどれかの色が3枚以上にはなります。
よってこの場合は「字牌の枚数j枚、数牌の枚数14-j枚」の組み合わせ数を数えればよいことになります。
その数は28Cj×108C_{14-j}通りです。
180715-03.png
以上、字牌が0枚~14枚のすべてに対して「一番多い色の枚数+字牌の枚数が10枚以上」の組み合わせ数を数え上げることができました。すべて足し算して全体の136C14で割ると、「一番多い色の枚数+字牌の枚数が10枚以上」の確率は14.3%です。
麻雀AI開発その85・途中押し%を可変に
前回(麻雀AI開発その84・他家染め手和了時の打点分布予測)は染め手の話をやってて、染め手関連のデータはそろってて、AIの改造のパートになるはずだったのですが、
なにかと他にやることが多くて手がつかなかったのと、やる気が出なかったのがあったので、大掛かりな改造をほったらかしにしていました。

今回は大掛かりな改造は後の課題としておいといて、人からの要望があってかつカンタンそうな課題からやってみることにしました。

今までシミュレーションパートにおいて、他家攻撃があるときの次巡以降の押し引きは、聴牌は全ツッパ、一向聴は10%以下押し、二向聴は3%以下押しで固定にしていました。
その固定の途中押し%をソフトの利用者サイドで、可変にできるようにしました。

見た目とか使い勝手はこんな感じ↓。(局面は7月11日分のツイッターのお題。)
180713-01.png
180713-02.png
右下の赤四角で囲った部分を新設しました。

上の画像は聴牌全ツ(デフォルト設定)、下の画像は聴牌10%以下押しに変えたものです。
下の画像の方が和了率と放銃率が下がって不聴流局率が増えてるのがわかります。

思ったよりはカンタンにできました。
さっそく今日のお題から実戦投入することにしよう。
クソ配牌の行く末
今日は悪い配牌をもらった時の話です。(汚い言葉遣いなのは承知の上で、以下「クソ配牌」と呼ぶ)

特にアガリが欲しいときの親番でクソ配牌がくるとげんなりしますよね。
今回はてきとうな条件を満たしたクソ配牌について、どの程度アガれるかとか、局収支がどの程度か、というものを調べてみました。

今回設定した条件はこちら。
・第一ツモの14枚配牌(自分が鳴きを入れた場合は除く)が次の条件をすべて満たす。
・面子なし
・両面なし
・対子3組以下
・役牌対子なし
・ヤオ九牌8種以下

結果はこちら↓。
180711-01.png
上の条件を満たすクソ配牌が来る確率は5%弱。20回に1回はこういうきつい配牌が来ると。

アガリ率は親で11%、子で8%。
思ったよりはクソ配牌がきても上がれるようです。
タンヤオの可能性については今回条件に入れてないので、そのへんがそこそこのアガリ率がある要因かなーと。

放銃率は親で13%、子で11%。
子のクソ配牌なら配牌オリの穴熊戦法も取れるので、放銃率低めですけど、親だと配牌オリとか言ってられないから、厳しく感じる。

局収支は親で-654点、子で-856点。
うん、きついね。

20回に1回くるクソ配牌をいかにして乗り切るか、その方法は闇に包まれている…。
鳳凰民は役なしドラなし聴牌でリーチをかけるか、その4、段位別編
前回(鳳凰民は役なしドラなし聴牌でリーチをかけるか、その3)の続き。

今回は役なしドラなし聴牌の即リーチ率について、聴牌者の段位別に分けて実測値を取ってみます。
仮定は、その2のときの仮定と同じ(他家はリーチも副露もしてない条件は入れる、残り局数40000トップ目条件は外す)とします。
子の場合のみを載せました。

結果はこちら↓。
180710-01.png

段位別で即リーチ率の結果が違うように見える部分は、

・中盤の筋待ち
九段以上の人は筋待ちで即リーチする率が少なくなってます。
強者はリーチのみ筋ひっかけをあまりいいようにとらえてない人が多いとか?

・中盤までの数牌シャボ待ち
こちらも九段以上の人の即リーチ率が低めです。
八段以下の人は数牌シャボの即リーチ率>片無筋カンチャンペンチャンの即リーチ率となってるので、
「カンチャンペンチャンよりはましな数牌シャボ待ちだからリーチしちゃうかー」みたいなのが一定数いるのに対し、
九段以上では、数牌シャボの即リーチ率≒片無筋カンチャンペンチャンの即リーチ率なので、
カンチャンペンチャンでは即リーチしないけど、数牌シャボでは即リーチする人がほとんどいないのかもしれません。
高段位ほどラスのペナルティが重い、というのも影響してるのかもしれませんが、強者はむやみやたらに1300リーのみシャボをやらないと。

・片無筋28待ち
九段以上の即リーチ率が低めです。
たぶん数牌シャボ待ちと同じような理由かと思います。


逆にそれ以外は即リーチ率に大きな変動はないようです。
単騎とか両無筋カンチャンみたいなかなり悪い待ちと、字牌・両面・三面張みたいなかなりいい待ちは、段位(打ち手のレベル)には影響されず、筋待ち・数牌シャボ・片無筋カン28みたいな中間くらいにあたる待ちで、段位や打ち手のレベルで差が生じてるのがやや面白いように思います。

自分自身は筋待ち以上ならわりと1300リーチのみを打つ方なので、そのへんの即リーチするハードルをもうちょっと高く上げてみれば強者にちょっと近づくことができるのではないかと思ったりしました。
鳳凰民は役なしドラなし聴牌でリーチをかけるか、その3
昨日(鳳凰民は役なしドラなし聴牌でリーチをかけるか、その2)の続き。

昨日からさらに次の条件を追加して同じデータを取り直しました。
・残り局数3以上(オーラス・ラス前の排除)
・自分の持ち点が40000点未満

結果はこちら↓。
180709-01.png
前回からさらに即リーチ割合がアップ。9巡目両面で76%。
まだ、「先制両面ならほぼ即リーチ理論」には遠い実態になっています。

どうしても気になるので、両面リーのみをダマにしたケースを観測することにしました。
最初の1万局で次のような例がありました。
180709-02.png

こうして並んでるのを見る限り、10件目のドラ南のやつ以外は、ダマにするのも理解できなくはないです。私が実際にこの手牌をもらったとして、ダマにするかどうかはまぁおいておくとして。

先制両面リーのみをダマにする理由を具体例から類型化すると、
・三色手替わり待ち
・ドラ引き待ち
・亜両面・ノベタンからの手替わり待ち
・役牌対子からのシャンポン変化待ち
・トップ目(ダントツのときは特に)
・上位と点差が離れているときの2着目3着目
・リー棒を出すと着順ダウンのとき

くらいになっているようです。
手牌によっては複数の要因がからむこともあり、その場合はダマにしやすい…かもしれない。

というわけで、今日のところはこんなところで。
鳳凰民は役なしドラなし聴牌でリーチをかけるか、その2
前回(鳳凰民は役なしドラなし聴牌でリーチをかけるか)の続き。

前回の条件のうち、
・他家3人はリーチはかけてない(副露状態は不問)
を、
・他家3人はリーチも副露もしていない
に変えて同じデータを取り直してみました。

結果はこちら↓。
180708-01.png

全体的に即リーチの割合がちょっと上がっている、
のだが、まだ両面待ちなのに即リーチしてないケースがけっこうあります。

他家副露の場合を排除してるので、感覚的にはもうちょっとダマ率が下がってくれればいいんだけどなぁ、と思ったりとか。

次はオーラスとかラス前を排除したらどうなるかくらいをやってみようかなぁ、と思っています。
白ポッチにまつわる話
巷の雀荘では、白ポッチなるものがあるらしいです。
リーチをかけた後に1枚の白ポッチをツモれば、オールマイティとしてアガれる、また場合によっては祝儀がつくこともあると。

人から聞いて面白そうなテーマだとは思ったけど、今のシミュレーションに組み込むのはちょっと骨が折れる感じ。
なので、手抜きして、今日1日でできるレベルに簡単な仮定でプログラムをちょちょいと書きました。

〇ケース1 先制聴牌
仮定は、
・現在5巡目
・他家3人は完全にベタオリするものとする。
・1順当たりツモアガリ率は両面が7%、愚形が3.5%とする。
・1順当たり白ポッチツモ率は1%とする。

とてもシンプル。
180706-01.png
白ポッチありで、両面のアガリ率64%のうち、8%分が白ポッチでの上がり。比率的には8分の1ですね。(これは置いた仮定から自然とそうなる。)
愚形だと45%のうち、10%が白ポッチ。通常のアガリ牌の枚数が少ない分、白ポッチの影響は大きめです。

後は局収支ですが、打点に関する仮定を適当において、
(元の打点が1300・2600くらい想定で、一発とか裏ドラとか祝儀とかも込みで、大雑把に8000くらい。白ポッチツモで祝儀1枚オールの場合は、祝儀3分の1理論で素点5000点くらい追加で計算。)
計算したのが一番右の列。白ポッチがあると、700点~1000点くらいプラスの影響があると。


〇ケース2 後手聴牌
仮定は、
・現在5巡目
・他家1人が先制リーチかけてる、2人は完全にベタオリするものとする。
・1順当たりツモアガリ率は両面が7%、愚形が3.5%とする。
・1順当たり白ポッチツモ率は1%とする。
・他家1順当たりツモ率は6%とする。
・初手危険度は10%とする。
180706-02.png
後手聴牌だと、自分だけでなくて、相手も白ポッチツモができるので、そこまでアガリ率には大差がないです。
放銃と流局が減る分が、被ツモの増加になると。

打点はまたしてもてきとう(元の打点が1300想定。チップも込みでごにゃごにゃと。)で、
局収支で白ポッチありの方が200点~400点くらい上がると。


まぁ今日のところはこのへんで勘弁してもらいましょう。
プロフィール

nisi5028

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

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

この人とブロともになる

QRコード
QRコード