*All archives* |  *Admin*

<<03  2009/04  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  05>>
レポート1「一向聴時対リーチ押し引き」その14 改善結果編1
基本条件は↓
・現在順目t0→グラフのx軸
・先制リーチ順目t1→t0の2/3倍(少数点以下切り上げ)
・失点H=4800、K=1600(対子リーチ)
・自分親or子→z=0(自分子)
・自分和了点W=6100(子の3ハン30符)
・現在切ろうとしてる牌の放銃率p(t0)→片無筋
・追っかけリーチ宣言牌の放銃率x→両無筋(←変更!)
・一向聴有効牌→12枚
・聴牌時和了牌→確率1で6枚(両面確定一向聴の想定)
ここまでは前と同じ。これにプラスして、
・現物枚数m=2
・2人攻めのとき先制リーチ順目t1は二人とも一緒

とりあえず基本条件でグラフを書いてみよう。
rep01-44.png
なんかグラフがでこぼこしてるよぉ。まぁきっと原因はこれだな。rep01-45.png
先制リーチ順目t1。やはり今回は現物の数に関係する分それなりに変化がある。先制リーチ直後と1/3倍切り上げとの間で中順くらいで200点差が生じてる。大体その辺だと先制リーチタイミングが6~7順くらい違うから、タイミングが1順違うと数十点くらいの差になるのか。

1順違いでこの程度差だと2/3倍切り上げみたいに1順進むごとにt1が1増えたり変わらなかったりするやりかただとデコボコするのは当たり前だな。デコボコしてるのはきもいから、t1の基本条件は先制リーチ直後(t1=t0-1)に変えよう。するとこれ以降では先制リーチのタイミングがこれから1順さかのぼるごとに大体30点くらい攻めるほうが悪化と(この条件において)大体見積もることができる。なおt1をt0-1とすると1順目は多少イレギュラーを起こすのでそこは無視しときます。(仮定からして1順目に先制リーチ入った状況で自分の順目を迎えるのはありえないし。)

改めてt1を変えた状態での基本条件のグラフ↓rep01-46.png
p(t0)とnの変化は大して前と変わんないかぁ。(その9参照)
xの変化はどうか?予想では前より変化が小さくなってるはずだが・・・
rep01-47.png
大体中順で上から下まで100点差か。その9のときはというと・・・300点差だったから確かにだいぶ影響が小さくなってる。特に片無筋とスジ2378の差がほとんどないのも(中順で20点以下)、それなりに大きな発見。

次に今回初めてメスを入れたベタ降り成功可能性。グラフは↓rep01-48.png
現物の数が小さいところで序中順は1枚当たり100点差、終順の0~1枚で200点差弱。やはりそれなりにインパクトがあるみたいだ。しかし、現物の個数増やしても完全ベタ降りのときと比べ、特に序順ではかなりの差が出てしまっている。ちょっとおかしいな?と思って、直接関係はないけど流局したと仮定して流局までに切った(切らざるを得なかった)非現物の数を計算してみたら・・・
rep01-49.png
現物2枚くらいあっても流局までそれなりに非現物を切らされるのか・・・これなら完全ベタ降りと比べ差がつくのもいたしかたないのかな。

後、いままでなんでやらなかったんだろう?と思うくらい重要であろう自分の得点別の期待値。前はいちいちグラフを分けてしまったけど一個のグラフにまとめちゃったほうが断然比較しやすいから。
↓自分子対子リーチ
rep01-50.png
やはり1ハン違いで4~500点くらいのインパクト・・・やはり得点と和了牌枚数が2つの大きな判断基準であることは変わらないだろう。

↓自分子対親リーチ
rep01-51.png
役なし両面両面一向聴でベタ降りとどっこいどっこいとは!多分ベタ降り不確実性が効いてるんだろうなぁ。でもこの状況で無筋押すことなんてあまりない気がするのだが・・・

↓自分親対子リーチ
rep01-52.png
子対子のときを上下に広げた感じで大して変わらないかな?

ラストに二人攻めのときをどうするか?ですけど、前回(その13)の記事を書きながら二人の捨て牌が完全に独立ではまずいんじゃないか?(具体的にはリーチ後の捨て牌は二人の共通現物になるだとか、リーチ前に一方がある牌を切ったら3枚に減るからもう一方は同じ牌を切りにくくなるとか)と思い始めたので、そのときに書いた「正気の沙汰じゃないこと」をすることにしました。つまりa_iの分類を両無筋46とかするかわりに両ー両46とします。これによって19区分だったのが63区分になっちゃいました(ベタ降り可能性を考慮できないのは変わらないが。)。コピー&ペーストで何とかなる部分もそれなりにあるとはいえかなりグロッキー状態なのは否めない。二人攻めの計算シートを大幅改造することを強いられてるので二人攻めの場合の結果は全体のまとめも含め次回に持ち越しということで。
スポンサーサイト
レポート1「一向聴時対リーチ押し引き」その13 さらに改善を5
やっと計算シートが完成した~。今日はあまり時間がないからちょっとだけ更新。結果編は次回で。今日は前回の補足を。

ベタ降り成功率考慮の計算の副産物として、降りてる人の一順当たり放銃率(つまり安牌がなくなりやむを得ず切った牌で放銃の確率)が求まったので(たしかd(t)で定義したっけか)、これを一向聴時や追っかけリーチにも組み込みます。式は書かないですけど、順番を自分→リーチ者→降り→降りとしたので降りてる人が放銃するのはリーチ者が上がれずツモ切った後になります。つまりR(t)やC(t)を求める式において自分のツモ上がりや聴牌化、それと何も変化なく1順経過する事象に相当する部分について降りてる人が放銃しないという条件がつくので、(1-d(t))の2乗とか4乗とかをかけることになります。後追っかけリーチ時の和了率に降りてる人からのロンも加えときます。

とはいえ降りてる人の放銃率なんてカスみたいなもんなんで大して変化なんてないです、はい。(せいぜい和了率で0.何%程度しか変化しない)


次は結構重要なことですけど、今までのベタ降り成功率の考慮は一人攻め二人降りの場合のことなんで、当然二人攻め一人降りのケースでも考えたいわけです。が、少なくとも先と同じ方法では質、量、両面から言って無理です。

というのはまず量の面から言うとすでに両無筋とかの区分で二十何区分もあってこれにさらに両-片の46とかいう感じで分けてくとかもう正気の沙汰じゃないです。嫌です。

まぁ上の問題は超根気を発動させれば(まぁ私には無理だが)、なんとかなるかもしれないが、二人攻めは質の面でも大きく異なるためかなり困難。一人攻めのときと同じように1-パラメーターでこの点を対処しようと思うのなら、当然考えるべきパラメータは「手牌の現-現の枚数」となるでしょう。しかし、特にリーチ直後は手牌に現-現の牌が複数あること自体レアケース(実際現-現の組み合わせになる牌の割合は、一人攻めのときの現物の牌の割合と比べかなり低い)であったり、そもそも条件によって(だれが親か?など)牌の安全な順番が変化すること、またこれは量の観点からですが、たとえ順番が固定されても区分が多い分ひとつひとつの区分の発生率が総じて低く、そこまで多くのパターンを無視して計算するのはまずいということ(一人攻めのときは両無筋の場合を無視して現物を除いた4パターンで計算した。二人攻めだと15以上は考慮しなきゃまずいだろうから、・・・・キャァァァァ。狂いそうだ。)。かといってパラメータを増やすともっと死ぬ。

というわけで現状では二人攻めのパターンでベタ降り成功率を考慮するのは無理です。ただ、一人攻めのときよりベタ降り成功率が落ちるのは明白なんで、完全ベタ降りのときと比べたベタ降り期待値は一人攻めより二人攻めのときのほうが悪化するでしょう。また、リーチ後のツモ切り牌は共通の現物となるので一人攻めのときよりベタ降り失敗可能性による期待値悪化が2倍以上になることも考えにくいでしょう。

次回ちゃんとグラフを載せますけど、一人攻めのときは完全ベタ降りのときと比べ、大体数百点クラスの悪化になります。なので二人攻めの場合、期待値悪化はその1~2倍程度で見積もれます。範囲が広すぎるのはしょうがないとして、今後の研究次第。だれか二人攻めの場合をやってくんないかなぁ。


ちょこっと計算シート上で動かしてみるとなにやら不穏な動きが・・・。なんとなく原因は想像ついてるですけどちゃんと特定してから発表したいものです。
レポート1「一向聴時対リーチ押し引き」その12 さらに改善を4
今回は改善案のラスト。かなりの難題。

・ベタ降りの成功率を考慮

あまり攻めるのが有効でない状況でも現物がないからやむなく攻める・・・ということをモデルに組み込みます。ただ、この問題に関しては自分の手牌全体がどのようになってるかが問題になるので、今までのように待ちの部分だけを考えればいい状況と比べると格段に難しいです。

この難問をねじ伏せるべくかなり強引な仮定を設定しまくります。文句のあるやつはかかってこい!・・・というのは冗談ですけど、私の考えを参考にしてよりよい設定で計算してくれる人が出てくれるとうれしいわけです。あくまでこの問題に関してのプロトタイプみたいな認識なんでどこまで正しいかは?です。(ただ考慮しないよりはずっといいことは間違いない)

これから仮定について書いていきますけど、もしかしたら頭の中で当然と思っていて書き忘れてる仮定があるかも。
・一番簡単に考えるためベタ降りの成功率を司るパラメーターは「現物の個数m」のみとする。他の非現物については無条件(平均的分布)とする。
・自分の手牌の非現物についてその分布は前まで切った牌によらないとする。(普通はスジを切ってしのいだらその分手牌のスジの枚数は減るがそれは無視する。)
・自分の手牌は常に対子2組とかぶりなしの単独牌9枚とする。(これもおかしな話だけど計算のために目をつぶる。)
・現物はすべて単独牌9枚のいずれか。
・手牌の1枚1枚の分布は独立(実際は順子だったりすることを考えるとおかしいけどこれも知らんぷり)
・降りてる人に関しては現物も含めて完全無条件、順目について独立。
・ツモ順は自分→リーチ者→降り→降り
とりあえず以上かな。

次に記号の設定を

(再掲)a_i(t):区分iに属する牌の枚数。ただし区分iは次のとおり。
1→両無筋46、2→片無筋46、3→スジ46、4→現物46、5→両無筋5、6→片無筋5、7→スジ5、8→現物5、9→片無筋37、10→スジ37、11→現物37、12→片無筋28、13→スジ28、14→現物28、15→片無筋19、16→スジ19、17→現物19、18→非現物字牌、19→現物字牌
gah;ghea;gra;
gjagjihja;gh;agh

次からは新しい記号

・l_i:手牌のある一枚が(条件無しのとき)区分iのある牌である確率(←捨て牌k_iとの対比)
i=1→456、i=2→37、i=3→28、i=4→19、i=5→字牌
k_iのときと同様ひいいさんのサイトから計算
i=1→4.1% 2→3.8% 3→3.1% 4→2.0% 5→1.4%

・C(t):A(t)の式でk_iをl_iに代えたもの。
これを使うとt順目の手牌のある一枚が区分iのある牌である確率はA(t)のときと同様、l_i/C(t)となります。

・b_i(t):t順目の手牌のある一枚が区分iのいずれかである確率。区分分けはa_i(t)と一緒。
jag;igha;gnrl
上の式はC(t)の2行目に書いたことと区分iの枚数がa_i(t)であることから従う。

・c_i(t):b_i(t)で区分を再構成したもの。
i=1両無筋、2片無筋、3スジ37、4スジ28、5スジ19456字牌、6現物
qrrijhngohaihyu.png
この式はまぁ再構成しただけだから明らかでしょう。

・d_i(t):手牌で最も安全なものが区分iである確率、区分分けはc_iと一緒
akjjnbio;ahnl
d6は全体から手牌12種類全部が非現物である確率を引いたもの、d5はd6以外から全部スジ28以上の危険牌である確率を引いたもの・・・以下同様(なおd1は全部両無筋というほぼありえない状況なんで無視します。)。

・d’_i(t):現物がない条件で手牌で最も安全なものが区分iである確率、区分分けはc_iと一緒
jf;oshj;gha;h
条件付確率の定義から。分母は現物がない確率。

・d’(t):現物がない条件での放銃率の平均。
rh;oagho;dfgha
切る牌(手牌で最も安全な牌)に関する場合分けにより上の式になる(片無筋を切る確率はd_2(t)、そのときの放銃率p_2(t)など)。

・e_i(t):リーチ者の次順捨て牌でi個現物が増える確率(i=0,1,2)
pjwhgo;hytd
e_1について、単独牌非現物は9-m個、その1個1個に対し自分が持ってる1個以外の3個が自分の手牌(13)と相手の捨て牌(t-1)以外にある。切られる確率がランダムとすると上の式のようになる。e_2も同様。

・f_j(t):次順ツモで現物がj枚増える確率(j=0,1)
iiroeghjo;a
ツモ牌はランダムとして現物をツモれば現物+1枚、そうでないとき+0枚。(分子は現物の枚数)。

・g_k(t):降りてる人が放銃せず現物がk枚増える確率(k=0,1,2)
eh;agh;aha
g_2(t)で切る牌がスジ1のとき、スジ1が切られる確率がd_5(t)、それで放銃しない確率が1-p_5(t)、その場合両スジ46、5、スジ19、字牌という区分に分けて、例えば両スジ46のとき切ったスジ1が両スジ46である確率は手牌ベースで割合をとることでb_3(t)/c_5(t)、自分の手牌の対子1個がその切られた両スジ46である確率が2l_1/C(t)(2は自分が持ってる2枚以外の2枚)。これを全部の場合について足し合わせ、最後に対子が2組なので2倍というような計算です。
g_1(t)はg_2で分子だけが変化するのでその調整、g_0(t)はg_1g_2と放銃する確率(1-c_6(t))^12d’(t)を引いたもの。

ようやく記号の定義はお終いです。これらを使ってベタ降り期待値B(t,m)は次のように計算できます。
weiluhghl.png
ただし、δ(m、0)はm=0のとき1、そうでないとき0となる数。
m=0のときに限り確率d’(t)で放銃、そうでないときq(t)で被ツモ、そうでないとき一順(もしくは他家が振り込んで終了)して、そのときの現物の数はm>0のときは前順現物を切ってるのでー1枚、他家の捨て牌関係等でi+j+k+l枚増えます。

基本的には上の式で計算するのですが、mが大きくなるとさすがに仮定と現実との乖離が大きくなるのとめんどくさいのとどうせある一定以上ではそんなに期待値が変わらないのとでmに上限を入れてそれ以上では期待値一緒として計算することにします。


ここまでひどい設定を置いてもこんなに複雑な式になります。まだ計算はできてないけどめどはつきそうなので、今週来週くらいには結果を発表できるかなぁ。
レポート1「一向聴時対リーチ押し引き」その12 さらに改善を3
あまり計算は進んでないけど、できてる範囲で更新。前回までの補足がメインで。

切る牌の放銃率関連でp_i(t)とa_i(t)のグラフrep01-15.png
↑前の
rep01-43.png
↑改善後(ただし先制リーチ順目t1=7順目)
グラフのスケールが違うから分かりにくいけど、先制リーチ後に2人がツモ切りするため現物がガンガン増え、危険牌の放銃率が急速に上がってく。15順目=リーチから8順後では両無筋20%超、片無筋12%とかなり高くなってる。早いリーチに対して途中までは攻めるけどその先は降りという戦略がこれからも正しそうなことが分かる(同じ無筋でも危険度は段違い!)。
また、残り枚数についても無筋は前より減ってはいるけどそこまで顕著というわけではない(現物が増えてもそれなりに無筋をツモる頻度はある)。
なおこれは他家2人降りのグラフだが1人降りの場合はグラフの傾きがさらにとんでもないことになる。


いい忘れたが2人攻め1人降りの場合について先制リーチ順目t1は両者共通=同順に2人からリーチとした。ほんとは分けるべきだろうがそこまでの甲斐性を持ち合わせておりませぬ。


あまり数字で語られることが少なかった2人リーチに対する降り方。本論とは関係ないがせっかく放銃率とかを議論してるんだから数字で出してみよう。ここではある牌を切ったときの期待放銃失点を下の式のように考えこの数字が大きいものから切ってくべきと考える。
dsfghkarghar;
考えてるのは先制リーチt1=7順目の現在9順目(科学する麻雀の放銃率に近かったから)。まぁ順目ずらしても序列はそう変わらんでしょう。この順目での放銃率p_i(t)は両無筋から順に0.133406963 0.076041969 0.060033134 0.052028716 0.032017671
で大体0~-1000超ぐらいで上の式は分布してる。先に書くほど値が大きく(つまり安全)、50点差がついたら不等号>1個とする。

まず両方子(H1=H2=4800)のとき。(現-ス1とス1-現みたいな逆になってるのはこの場合同じなので省略)
現-現>>>現-ス1>>現-ス2、現-ス3、ス1-ス1>現-片>>ス2-ス2、ス1-片>ス3-ス3、片-ス2、片-ス3、現-両>片-片>両-ス1>>>両-片>>>>両-両
通ってない字牌(ス1-ス1)>現物+片無筋>両方スジ2378、現物+両無筋より両方にスジということか

一人目が親のとき(H1=7200)
現-現>>>現-ス1>ス1ー現、現-ス2、現-ス3>現-片、ス2-現、ス1-ス1>ス3-現>>片-現、ス1-片、ス2-ス2、現-両、片-ス1、ス3-ス3、ス2-片>ス3ー片、片-ス2、片-ス3、ス1-両、片-片>両-現>>両-ス1、片-両>>両-片>>>>両-両
通ってない字牌は親に無筋よりはっきり強い、親に現物子に両無筋は親にスジ子に片無筋より強い、親に両無筋子に現物より両方に片無筋のほうが強い

これはどうなんでしょうねぇ。強い人のご意見伺いたいところですな。


学校始まってしょっちゅう麻雀のこと考えてるわけにはいかないけどなんとか週1以上で更新を続けていきたいところです。早く結果だしたい。がんばらねば。
レポート1「一向聴時対リーチ押し引き」その11 さらに改善を2
続き。

・他に攻める人がいるときも考える。

前にも一回取り上げたので、大体そのときの話とここまでの話をくっつければ済む話ですけど、ひとつ大変なことが。

p(t)の分布を求めるために6つの区分に分けて順目ごとに牌の種類数と放銃率を計算したわけですけど、ケアする対象が2人になるとp1(t)、p2(t)と2つ同時に分布を考える必要が出てくる=区分分けがかなり増えるという悲しい事態に。とりえない組み合わせもあるとはいえ、全部で26区分に急増。これはきつい・・・

でもがんばりましたよ。いちおう実装完了。さすがにこれをグラフにすると見にくいことこの上ないからしません。でも何も結果を書かないのもどうかと思うので、10順目時点で起こりやすい=数が多い順に書いていきましょう。
片-片 26%、片-現 現-片 ス1-ス1 各9%、両-両7%、現-現6%、現-ス1 ス1-現 各5%
とこんなところです。

なお計算については切る牌の区分(46、5、37、28、19、字)が決まったという条件下でそれが各人にとって無筋かスジか現物かは独立として計算してます。例えば片-ス3の組み合わせの場合、条件を満たすのは切るのが37の場合のみで、その確率は6/34、それが一人目に対して片無筋である確率はa_7(t)/6、二人目に対してスジ37である確率はa_8(t)/6。これらが独立として求めるものはこれら3つの積です。(ただしa_7は片無筋37の種類数、a_8は同スジ37)


・p(t)をより厳密に求める。

前まではリーチ者に対して牌の種類数だけ考えてある種類が切られる確率が時間によらず一定、として計算してましたが、1種類4枚という制限がある以上それではやはりまずかろうと思い、がんばってそのあたりを汲み取ることを考えます。

というわけで牌の種類で考えるのではなく牌1枚1枚について考えます。よってa_i(t)の定義は次のように変わります。
a_i(t):区分iに属する牌の枚数。ただし区分iは次のとおり。
1→両無筋46、2→片無筋46、3→スジ46、4→現物46、5→両無筋5、6→片無筋5、7→スジ5、8→現物5、9→片無筋37、10→スジ37、11→現物37、12→片無筋28、13→スジ28、14→現物28、15→片無筋19、16→スジ19、17→現物19、18→非現物字牌、19→現物字牌
(19区分・・・多いな。というかこう変えるとさっき書いた計算も書き直さないといかん。(涙))

またk_iは同様ですが切ってる確率という意味よりは切られやすさの比率という意味で使います。(↓再掲)
・リーチ者がt順目にそれぞれのカテゴリに属する牌を切っている確率をk_iとする。
i=1→456、i=2→37、i=3→28、i=4→19、i=5→字牌
これはひいいさんのサイトの「牌分析」の項を参照して、推定する。
i=1→1.7%、i=2→2.0%、i=3→2.8%、i=4→3.9%、i=5→4.6%、

まず簡単のためA(t)を次のように定義します。
gah;ghea;gra;
これはkで重みをつけた牌の合計であり、これを使うと区分iのある1枚が(動きなしの場面で)捨てられる確率はk_i/A(t)と求まります。

まず初期条件。
gare;gj;igargh;aegnae
その他のa_i(1)は0です。

次にt<t1の場合は(将来の)リーチ者にとって関係ある牌はリーチ者の捨て牌のみなので、漸化式は次のようになります。
CAQZOHWH.png
非現物については捨てられる確率を変えて、増える減るが1種類から4枚の4倍にしてるだけです。現物については非現物が切られたときはその牌が3枚現物にプラスされ、現物が切られたときはその牌が現物から1枚マイナスされます。なおa5~8は1~4のk2+k4を2k3に代えて、12~14は9~11のk2→k3、15~17はk2→k4とすればいいです。

次にt>=t1の場合はリーチ者と(攻めてる)自分がランダム牌切り=ツモ切りとして↑をちょっと変えたものを使います。B(t)を次で定義します。
gjagjihja;gh;agh
B(t)は単なる牌の合計(現物となってる捨て牌を除く)で、2つ目の等号は全136枚から現物となってる捨て牌分でリーチ前のt1枚とリーチ後の2(t-t1-1)枚を引いたものです。
これを使って同様に漸化式を立てます。
CAODIDDE.png
1/2は現物に関係ある牌を切るのが1順当たり2人いるためで、順目なので普通整数ですけど便宜上このように書いておきます。
2つの漸化式からa_i(t)を求めるわけですが、ご覧のとおりこれはt1に依存してます。これだけでも十分しんどいですが、後でもこれを使っていろいろ議論したいのでちょっとt1依存を考えるのはやりたくありません(Excelで3次元的になるのは手間)。そこでここに関してはt1=6順目で固定して計算させてもらいます。だめです!ちょっとやってみたらt1の影響かなりでかそうです。これでは固定して考えるわけにはいかない。かなりしんどくなること必至。改善した結果を出すのはまだ時間がかかりそうです。

なおこのa_i(t)からp_i(t)を求める式は次のようになります。
a;fgho;eyhg;egh


後の改善案はベタ降りが完全にできない場合を考慮することだけですが、上のa_i(t)とかを使うんでまずはa_i(t)を実装せねばならぬ。一応理論は固まりつつあるので書こうと思えば書けますけど、疲れてきたから今日はこれくらいで。
レポート1「一向聴時対リーチ押し引き」その10 さらに改善を
さらに実際のゲームに近い状況にするために、必要な改善を加えていきます。だんだん複雑さが増していってるのでもはや何がなんだか分からんことになってるかもしれませんが・・・


・「テンパッたら常に追っかけリーチ」というのを変更

特に流局間際に言えることですが、あまり和了にかけるのが有望でなくむしろ流局にかけたほうがいいような場合、わざわざリーチ棒出すのが損になる場合がちょっとあります。そういう時は振りたくないならテンパッても降りてしまいますし、聴牌料が欲しいときはダマにして流局すれば上々、上がれればラッキー程度に構えるでしょう。

このような事情を反映するため、C(t)を求める漸化式の中でR(t+1)とするかわりに、riajnabn.png
とします。ただし、D(t)はt順目ダマの期待値で、ここでは役あり聴牌であってリーチの現物待ちでない=降りてる人からは出ないけどリーチ者からはロンできる=リーチと和了率等は同じ、としてamopirgqeoghq.png
とします。ただしW'はダマのときの和了点です。

これを実装するのは簡単。実際はほとんどがR(t)となり、D(t)を採用するのは16~17順目くらいで、B(t)を採用することはほとんどありません。


・リーチ宣言牌の危険度が低下することを考慮。

リーチ宣言牌は問題としている順目より将来の順目に切るものなので、もしその間にリーチ者や自分が宣言牌そのものやスジ牌なんかを切ると、宣言牌の分類が無筋からスジや現物に変わったりして放銃率が低下します。(もちろん関連牌が切られないと危険度は上昇するがそのことはp(t)が時間変化することで織り込み済み)

これを計算するために、次のように記号を定義します。
・t:ここでは先制リーチ後に切られたランダム牌の枚数。2人降りなら1順でtは2増え、後に述べる1人降りでは3増えます。
・b_i(t):t枚経過後に区分iのような変化が起きている確率。ただし区分iは次のような変化を表す。
1:両→両 2:両→片 3:両→ス1 4:両→現 5:片→片 6:片→ス3 7:片→ス2 8:片→ス1 9:片→現 10:ス→ス 11:ス→現
これは次のような計算で求まります。
hbaogphjaghqp;ghqpe
CAINWD2Z.png
ただしa_2(8)~a_11(8)は前にも使った記号ですが8順目のそれぞれ片無筋46、5、37、28、19の種類数です(本来は8順目でなく問題となる順目を反映させるべきですけどかなりめんどくさいこと濃厚な上、まぁさして影響は大きくないだろうと判断したのでご勘弁ください)。したがってb6~8のでかい分数は片無筋の中での例えば37の割合を表します。
ある牌を引く確率を1/34として関連牌を引いたら区分が変更になるという考え方です。例えばb_2は両無筋からスジ456への変化で、片無筋から1/34の確率でスジ456に入ってくる代わりにスジ456から1/34の確率で現物へと変わるのでその分スジ456の確率は33/34に減ります。その他も同様です。

このときリーチ宣言牌の放銃率x_i(t)(ただしiは1:両無筋、2:片無筋、3:スジ37、4:スジ28、5:スジ19456字牌でtは前までのとおり順目)は次のようになります。
CA4XI5PE.png
これは区分が変化したら放銃率がその区分のものに変化するということを表します。なお1人降りのときは2(t-t0)の代わりに3(t-t0)とすればokです

実際にどんな感じに変化するかグラフを書いて見ます。
rep01-40.png
両無筋からの変化。9枚→4、5順経過すると半分以上が変化してしまいます。
rep01-41.png
片無筋からの変化。さすがに両無筋よりは変化が鈍る。
rep01-42.png
スジ(含字牌)からの変化。実は3つとも○→現物の数字は同じとなってる。ちょっと考えれば明らかだったが。

今日は疲れたからこんなところにしとこう。
レポート1「一向聴時対リーチ押し引き」その9 計算結果
Cでプログラム書いたら謎のエラー出て詰んでしまった。Excelもけっこうエラー出してくれるけどできるときもあるからまぁその結果が正しいと信じておこう。

今回はやたらと動かすパラメータが多いのでとてもじゃないけど全部の場合について考えるわけにはいきません。そこで基本となる状況を設定しておいてそこから各種パラメータを変化させてグラフを書いていきます。

基本となる状況は以下のとおり
・現在順目t0→グラフのx軸
・先制リーチ順目t1→t0の2/3倍(少数点以下切り上げ)
・失点H=4800、K=1600(対子リーチ)
・自分親or子→z=0(自分子)
・自分和了点W=6100(子の3ハン30符)
・現在切ろうとしてる牌の放銃率p(t0)→片無筋
・追っかけリーチ宣言牌の放銃率x→片無筋
・一向聴有効牌→12枚
・聴牌時和了牌→確率1で6枚(両面確定一向聴の想定)
変化させるべきパラメータはこれだけあります。(きついぜ・・・)
以下は特に述べないときはこのパラメータとします。

まずp(t0)と親子、得失点関係を動かします。
グラフのx軸は現在順目、y軸は期待得失点です(ベタ降り以外はその1順攻めたと仮定したとき)。それぞれの状況でベタ降りよりグラフが上になれば攻めるべき、そうでなければ降りるべきといえます。ただ誤差についてはまだどれくらいあるかは不明なんでどれくらい信用できるかは要検証。(かなり多くの要素を拾ったからかなり信用できると思うのだが、前にも書いたように他に攻める人がいるかはかなりでかい。やってみたいけどこれ以上複雑になるとできるかどうかわからん。)

↓基本からp(t0)のみ変化。
rep01-21.png

↓W=2500(子の1ハン40符)
rep01-22.png
↓W=3750(親の1ハン40符)z=1K=3200
rep01-24.png
↓W=9150(親の3ハン30符)z=1K=3200
rep01-32.png
↓H=7200、K=3200(対親リーチ)
rep01-26.png
↓H=7200、K=3200(対親リーチ)W=8700(子の4ハン30符)
rep01-31.png
現物~両無筋まで4~500点差。中間はスジ37。

次に先制リーチ順目t1を動かします。早いリーチはt0の1/3倍少数以下切り上げ、リーチ直後はt0-1です。
rep01-33.png
予想通りというか予想以上に変わらないです。max15点差しかないのでt1については無視して差し支えないですね。

次にリーチ宣言牌xを動かします。
↓x以外基本状況
rep01-34.png
↓W=3750(親の1ハン40符)z=1K=3200
rep01-35.png
p(t0)を動かしたときと比べると、全体的に終順に差が縮まっている以外は牌ごとの差を縮小して同じ形をしてます。(p(t0)は現在だがxは未来のことで、追っかけリーチできない限り切られる事はないのでその分影響が小さくなるためか。)だいたいxが両無筋⇔片無筋、片無筋⇔スジ19ぐらいの変化でp(t0)の片無筋⇔スジ2378ぐらいに相当するか。

次に有効牌の枚数を変化させます。
まず和了牌と聴牌化牌の枚数の比率を一定(2倍)としたまま和了牌の枚数を動かします。
↓n以外基本状況
rep01-37.png
↓W=3750(親の1ハン40符)z=1K=3200
rep01-36.png

想像以上に一枚差が大きく出て驚きです(大体250点差)。特に和了牌7枚付近(たぶん両面)で1枚あたりの差がmaxになってるのは面白いです。和了牌で2枚違うとp(t0)の現物~両無筋くらいの差は埋まってしまいます。最初の打点関係のグラフと見比べても1枚差が1ハンぐらいの差になってしまってます。

次に両面なら和了牌6枚、悪形なら和了牌3枚と固定して一向聴の形ごとにどのくらい差がつくか調べます。

・完全一向聴→聴牌化15枚、確率0.8で1ハン増し30符両面、確率0.2で40符両面
・両面確定→聴牌化12枚、確率1で1ハン増し30符両面
・両面+リャンカン→聴牌化12枚、確率0.5で1ハン増し30符両面、確率0.5で40符悪形
・カンチャン+カンチャン対子→聴牌化9枚、確率1で40符悪形

↓n以外基本状況
rep01-38.png

↓W=3750(親の1ハン40符)z=1K=3200
rep01-39.png

さっきのグラフを見た後だと差が小さく感じる。和了牌枚数にして完全一向聴⇔両面確定で1枚差、両面確定⇔両面+カンチャンで2枚差しかない。場況しだいで容易に逆転し得る差だ。

ここまでで特に影響がでかそうなのは打点と有効牌の枚数(と順目)であることが分かった。そこでそれ以外のパラについて「よい状況」「悪い状況」を設定し、打点と有効牌の枚数(と順目)を動かし、「よい状況」でなおベタ降りの期待値のほうが上なら降り有利、「悪い状況」でも押したほうが期待値上なら攻めるの有利と判定する。(どちらにも当てはまらないならグレーゾーンとする。)これなら高確率で正しい判断となるであろう。ただし他二人が降りているという条件下である。

ただし順目について序順1~5順、中順6~10順、終順11~15順として、区分ごとの全順目で勝ってる場合のみ判定します。
また有効牌の枚数について一律で(聴牌化の牌)=2×(和了牌)とします。(両面確定一向聴想定。上に書いたように完全一向聴ならこれに和了牌+1枚相当の効果。)

・「よい状況」→t1は基本状況、x、p(t0)ともスジ19456字牌。
・「悪い状況」→t1は基本状況、x、p(t0)とも両無筋。

自分子対子のとき
1300→序中順3枚以下、終順2枚以下降り。序順8枚以上中順9枚以上終順11枚以上攻め。
2000→序順3枚以下、中終順2枚以下降り。序順7枚以上中順8枚以上終順10枚以上攻め。
3900→全順目2枚以下は降り。序順5枚以上中順6枚以上終順8枚以上攻め。
7700→序中順2枚以下、終順1枚以下降り。序順4枚以上中順5枚以上終順7枚以上攻め。
5ハン→全順1枚以下降り。序順4枚以上中順5枚以上終順6枚以上攻め。


自分親のとき
2000→全順目2枚以下は降り。序順6枚以上中順8枚以上終順11枚以上攻め。
2900→全順目2枚以下は降り。序順5枚以上中順6枚以上終順10枚以上攻め。
5800→序中順1枚以下、終順2枚以下降り。序順4枚以上中順5枚以上終順8枚以上攻め。
11600→全順1枚以下降り。序順3枚以上中順4枚以上終順6枚以上攻め。

自分子対親のとき
1300→全順目4枚以下は降り。序順10枚以上攻め
2000→序終順3枚以下、中順4枚以下降り。序順9枚以上攻め
3900→全順目3枚以下は降り。序順7枚以上中順8枚以上攻め。
7700→全順目2枚以下は降り。序順6枚以上中順7枚以上終順10枚以上攻め。
5ハン→全順目2枚以下は降り。序順5枚以上中順6枚以上終順9枚以上攻め。

簡単にまとめると
・超悪形or対親リー低打点悪形は確定降り。
・対親リー低打点以外の序順両面両面一向聴なら確実に押せる。
・対親リー高打点、対子リー中打点の中順両面両面一向聴なら確実に押せる。
・悪形含みだと確定押しにするには序順高打点が必要。

かなりグレーゾーンも大きいですけど上に書いた範囲ではかなり信頼度は高いと思われます。例えば誤差に関して、p(t)の計算で「科学する麻雀」の記述より若干小さい気がしますけど(実際攻めてる人が出す危険牌を無視してたり現物は数が減ってるので次に出にくいなどで、現物の数を過小評価してるため危険牌の放銃率は小さく出てる。)、上でも書いたとおり現物~両無筋は2枚差しかないので多少上に動いたところで1枚差はそうそう埋まりません。1順当たりツモ率に関しても見えてない牌の総数の誤差が1枚を超えることはまず考えられません。よってモデル内に関わる誤差については1枚差は超えないと考えられます。

ただし「他二人が降り」の仮定はちょっと前にやったとおり影響が大きいことが予想されます。余力があったらやってみるかもしれませんが、現時点でどのくらいになるかは不明です。

とりあえず今回のところはこのくらいにしておきます。長くなってるけどこの理論がちゃんとしたものになればほかのことにも応用できるからがんばって完成させよう。
つぶやき
なんぼ理論が複雑でもExcelにかかれば計算なんかちょろいと思ってたんだが甘かった。変数が複雑にからんで予期せぬ動作しだしてわけ分からんようになってしもた。Excelでは3次元以上のデータを扱うのは困難ということか。

Excelはあきらめて慣れぬプログラミングをやることになってしまった。また1からやり直しというのは泣ける。
レポート1「一向聴時対リーチ押し引き」その8 理論再び
前回ごたごたがあったので再び理論を始めます。変わるのはp(t)の分布を考慮するのと有効牌の枚数を考慮することです。まず有効牌の枚数を考慮するところから始めます。

その6のコメントの返信にも書いたように自分の一順当たり聴牌化率rだとかリーチの1順当たりツモ上がり率pやqなんかを(見えてない有効牌の枚数)/(見えてない牌の枚数)とかで推定することができます。

ただ問題となるのが分子分母ともに順目によって変化するのでこれらのパラメータをtに依存する関数として扱わなければならないことになります。

ここでおことわりですが、上の事情から追っかけリーチ時1順当たりツモ上がり率pはp(t)とか表示することになるのですが、これだとt順目に切る牌の放銃率p(t)とかぶってしまうので、ここでは追っかけリーチ時1順当たりツモ上がり率をu(t)と表します。

議論を始める前に必要となる新しい前提と記号定義をしておきます。
・ツモ順について降り→自分→リーチ者→降りと固定します。自分やリーチ者が親だったりすることを考えると矛盾することもありますけど、まぁツモ順の誤差なんかたいしたことないです。
・t1:リーチ者がリーチをかけた順目。t0>t1である。
・t2:自分がリーチをかける順目。t0<t2である。
・n:現在順目t_0における見えてない有効牌の枚数。一向聴のときなら聴牌化する牌の枚数で、リーチのときは和了牌の枚数

まず1順当たり聴牌化率r(t)ですけど、まず現在順目t0において8764646.png

と推定できます。ここで、136は全部の牌の枚数(34×4)、13は自分の手牌の枚数、1はドラ表示牌、次のカッコ内は全員の捨て牌の枚数です。自分のツモ順が2番目としたんで4(t_0-1)にプラス一枚で4t_0-3です。

次に将来時点でのr(t)ですが、他家からどれだけ有効牌が切られるかわかりませんし、単純に有効牌もそうでない牌も同様に切られる→現在順目と有効牌の濃度は変わらないと考えて
418471.png
としておきます。(よって、r(t)は将来順目tにはよらない。ここで現在順目t_0にはよっているのですが、今後書くのが面倒なのでt_0に依存することは前提として、単にrと書きます。以下で議論するパラメータについてもt_0に依存することは前提として記号表記します。)

次に追っかけリーチ一順当たりツモ上がり率u(t)とリーチ者1順当たりツモ上がり率q(t)についてです。

q(t)のほうは、リーチがかかった時点のツモ率q(t_1)を345634834.pngとしてそれ以降のq(t)を計算していきたい所ですが、実際はこれをちょっと修正します。ただやや難易度高い内容なんで次の段落は読み飛ばしてもいいです。(ただし、t_1時点ではツモ上がりはないですけどね)

修正というのはq(t)の計算をするときに「t順目の先制リーチ者のツモ番がくる」という条件がつくのでそれによってq(t_1)が変化します。具体的にはt順目まで上がれないという条件から先制リーチの悪形率が上がります。その計算にベイズの定理を使います。
W:t順目の先制リーチ者のツモ番がくる
A:先制リーチが悪形
R:先制リーチが良形
というふうに事象を定義すると、t順目の先制リーチ者のツモ番がくる条件下の先制リーチが悪形である確率は
4864567.png
です。元の悪形率35%のかわりにこれを入れてq(t_1)を求めます。例えばt-t_1が3のとき(3順後のツモを迎える)、悪形率は38.6%に上がります。

2段落目の式から、(見えてない有効牌の枚数)=(1順当たりツモ率)×(見えてない牌の枚数)でリーチ後は見えてない有効牌の枚数は変化しないことからq(t)は次のように求まります。
khgsdroghtweogre.png
(qはt1にもよるためこうゆう表記になる)
ただし4t_1-2はリーチ前の全員の捨て牌、2(t-t_1)はリーチ後の全員の捨て牌のうち自分とリーチ者の分です。(降り2人分は和了牌をつかんでも手牌に残すので山から和了牌をツモったか判別できない。よって計算から除外する。)

u(t)について、t2時点ではrのときと同じ理由から下の式で推定できます。(ただしt2時点ではツモ上がりはないですけど)
hagsdghla.png
t2以降の考え方はqのときと同様で
asdf;jgf;agjia

pとqについてグラフで書くと下のようになります。ただし、残り和了牌は6枚で、相手の先制リーチ順目t1はリーチ順目t0=t2を2/3倍して切り上げした順目とします。(7順目リーチなら5順目、13順目リーチなら9順目。まぁこれぐらいの見積もりがよくある状況でしょう。)
rep01-16.png
リーチ順目が遅いほどツモ率が高いのは残り和了牌を6枚で固定してるからです。実際は遅いリーチほど残り和了牌は少なくなることが多いので、少なくなった分だけグラフは下に下がります。
rep01-17.png
こっちは先制リーチの順目の依存度がかなり小さいですねぇ。また案外補正効果が強く出て順目が深くなってもそこまでツモ率が上がらない。



とここまでで有効牌の数をパラメータに影響させるところまでできました。これを使ってベタ降りと追っかけリーチの和了率を出します。記号の定義は以前と同様で、w:和了率、h:放銃率、k:被ツモ率、r:流局率です。だいたい以前と一緒ですけどパラがtとかによるせいでやたら複雑になってます。

まずベタ降りから(3人降り)。
aghag;leu
(ただしΠは積をあらわす)
まだ漸化式解ける。

次に追っかけリーチ(他二人降り)
gahd;goiyerty;
(めんどくさいのでwとかがt1t2によるのは省略しました。)
もう漸化式解けない。

これにさらにリーチ宣言牌の放銃率xの要素を入れますが式は省略します。というか漸化式のままでは書けないし。hは元の確率の(1-x)倍にxを加え、それ以外は元の確率を(1-x)倍します。

和了率等のグラフは下のとおり。(現在順目でのベタ降りと追っかけリーチにおける確率、つまりt0=t2。t1はさっきと同様。残り和了牌は6枚。宣言牌は片無筋(放銃率は時間依存)。)
rep01-18.png
追っかけリーチ和了率の早順がちょっと下がってるのはpのときと同様、残り和了牌を6枚に固定してるせいです。いろんなパラを固定してるのでこのグラフから即順目ごとの比較ができるわけではないです。
前のグラフと比べると中順での和了率が10%弱ぐらい上がってます(割を食ったのは流局率)。中順で残り6枚ならそれなりに頻度は高いだろうしこれはけっこう重大な変化になりそうです。ベタ降りは大して変わってないけどそれはそれでいい。

残り和了牌3枚と9枚(悪形と3面待ちの想定)でもグラフを書いてみよう。
rep01-19.png
こちらも前と比べて中順の和了率がマシになってちょっと救われそうだ。
rep01-20.png
両面と比べて和了率10%増しか・・・そんなものなのかな。

それぞれの期待値は前と同様。R:追っかけリーチの期待値、B:ベタ降りの期待値。再掲しておく。
a06a30c031ceedbec8981babc5d7b237_90_black.png
f59a1f5034e43c34d5d090dd25db5b1c_90_black.png
また一向聴の価値は下の式(これも再掲。ただしqのかわりにq(t、t1)になる。書いてないけどもちろんCやαはt1t2その他もろもろのパラメータによってる。)
8fd6b0ee314cf90cc7b6ab36fc66e8a7_90_black.png
αは下式の右辺
0b49373e03774d7474c0d10d89834e53_90_black.png
めっちゃ長くて難しかったけど理論は終わり次回計算してみましょ。
プロフィール

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

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

この人とブロともになる

QRコード
QRコード