2010年01月29日

染め手の聴牌率?

コメントに要望があったので
相手が染め手らしい時、どのくらい聴牌できるのか?
について、調べ



たかったんだけど、手を抜いたので?ちょっと違う感じの物になりました。
正直、いったい自分が何を集計したのかよく分かってませんが
今回の集計をありのままを書いておきます。



まず、染め手を狙い率と聴牌率


調べた局数×4(4麻東風)=2040460

字牌+同種の牌を11枚揃えた割合=10.3%
11枚揃えた以降の染め手聴牌率=23.3%

字牌+同種の牌を12枚揃えた割合=5.4%
12枚揃えた以降の染め手聴牌率=44.3%

字牌+同種の牌を13枚揃えた割合=4.2%
13枚揃えた時点での聴牌率=9.7%
13枚揃えた以降の聴牌率=56.58%

13枚揃えが染め手狙い確定だとすると
ある一人は1局に4.2%は染め手を狙っていて
毎局、自分以外の誰かは 12%位 染め手を狙ってるらしいです。
4.2%で染め手を狙って56%が聴牌しているので
全体通して 2.4% は染め手を聴牌していた事になりますが
その時の平均順目は 6.1 です。


さて、次。河にある同種の牌の数と聴牌率


仮に13枚揃った時なら察知できるとしたら
と言う無理矢理な前提で、13枚揃った時に河にある同種の牌の数と聴牌率の関係です。
染め手の聴牌率

少し補足すると、数牌は6枚までが全体の8割を占めます。
字牌は平均8枚くらいでほぼ均等です。
あと、枚数が少ないほど揃えた平均順目が早いです。

まー13枚揃えた時点からの聴牌率は、河の状況にほぼ関係ないと言えるんでしょうか?
また、13枚揃えた順目とも関係ないです。
13枚揃えた順目別と染め手聴牌率

この集計では、染め手狙いらしい人がどのくらい危ないか?は、分からないってことですね。
まー、そもそも、いつ13枚揃えたかなんて分からないですし
同種2泣きからの染め手率とかの方が良かったかな…


2010.02.01 追記 同種の数敗を2副露した時の染め手率などなど
副露と聴牌率と染め手率

副露と順目と聴牌率
posted by idaten! at 13:00| Comment(23) | TrackBack(0) | 麻雀分析の結果
この記事へのコメント
自分のIDで解析ページに飛べなくなってしまいました。
牌譜を送信することは出来、新規IDを取ってみて再挑戦したらうまくいった(解析ページを見れた)のですが、どうしたらいいのでしょうか?
Posted by タケシィ at 2010年02月02日 13:21
一応修正したので、チョット見てもらえますか?
もし動けば、どちらのIDでも好きな方を使って下さい。
Posted by idaten! at 2010年02月02日 18:41
うまく見ることができました。
素早い対応有難うございました。
Posted by タケシィ at 2010年02月03日 08:52
コメントいただいたんでこちらにとんでみましたが・・・

すんごいですね!
私みたいに東風荘のmjscoreのテキストファイルをちまちま解析していくのと比べるとデータ数が雲泥の差でたちうちできないなぁなんて思っちゃいます。

私のやった分析もこの天鳳のデータならもっとずっといいものになるんじゃないですか?
大まかにはブログに書いたとおりですけど、
詳しいアイデアとかいくらでも提供するんで
やってくれるとうれしいなぁ、なんて思ったりしてます。
無理かな?
Posted by nisi at 2010年02月03日 17:17
>nisiさん

いらっしゃい
分析ネタは常時募集中ですので、どんどん言って下さい。
プログラムだけならさくさく作りますんでw
Posted by idaten! at 2010年02月03日 23:56
それじゃ、せっかくなんで今知りたいことを。

ある順目でリーチ者がいる場合にそれ以外の人がある区分の牌(片無筋とか単騎字牌とか)を切ったときの放銃率を出したいと思っているんですね。良形、悪形別で。

式的には例えば良形、片無筋、8順目なら
(8順目に良形リーチ者に対し片無筋が切られて当たった回数)÷(8順目に良形リーチ者に対し片無筋が切られた回数)
といった具合に。

良形・悪形問わずのはもうできてるんですけど、
別個で数値が欲しいと思いまして・・・

良形はほぼ両面なのでスジや字牌はほとんど当たらない反面、無筋での放銃率はかなり高くなるんだろうと当方は予想してます。
Posted by nisi at 2010年02月04日 22:00
ふむふむ、今あるデータでは分からない情報ですね。
立直の待ちはDBに入っているので、立直後、他家が捨てた牌とその牌のカテゴリーを調べる必要があります。
ちょっとすぐできるか分かりませんが、いずれやってみたいと思います。

あ、良形・愚形の定義はどうしましょう?
Posted by idaten! at 2010年02月04日 22:56

とりとめがないんですが、
今知りたい事から発想した私が思った事のメモでです。


これは、ある良形立直者がいた時、
河にどのくらい筋情報となる牌が捨てられるかの確率を求めることにも繋がるのかな?

立直全体を待ち形別で分けて
それぞれの待ちと河情報からの牌の危険度の算出になるのかな?

愚形立直に対する捨て牌を筋のカテゴリーで分けても
放銃率は愚形立直の待ちの分布と変わらないのでは?

そうとも限らないか。
たしかに調べてみるのはおもしろい。

捨て牌のカテゴリーに1チャンスの1289などの情報を加えれば
愚形立直に対する放銃率も待ちの分布とは確実に異なってくるはず。


自分で書いていてこんがらがってますw
Posted by idaten! at 2010年02月04日 23:09
良形の定義は、リーチ者がいて自分もできれば攻めたいというシチュエーションで考えているので字牌待ちのシャボ・単騎は抜きで
両面待ちと多面待ちですかね。

>愚形立直に対する捨て牌を筋のカテゴリーで分けても
>放銃率は愚形立直の待ちの分布と変わらないのでは?

リーチ全体での調べで待ち分布と(当たった回数)÷(切った回数)の放銃率では微妙に後者の方が全体的に低かったように思います。
同じカテゴリでもより当たりにくいほうを切られるということでしょうか。
個人的には実際に当たったかどうかが重要だと思うので放銃率を見るなら後者の方がいいと思ってるのですが。

>捨て牌のカテゴリーに1チャンスの1289などの情報を加えれば
>愚形立直に対する放銃率も待ちの分布とは確実に異なってくるはず。

現状6カテゴリに分けてますけど、あんまり分けすぎたくないのが本音です。次分けるとするとスジ28と37、あるいはスジ19と456と字牌(2枚以下見え)程度でしょうね。
大量のデータがあればそれ以上の区分けもOKかもしれませんが。
Posted by nisi at 2010年02月06日 14:54
牌譜解析で別のIDの牌譜が混ざってしまったのですが取り除くことは可能でしょうか?><
Posted by at 2010年02月06日 18:29
その作業はそちらでやってもらっていいですか?

当サイトのIDを新しく作り直して必要な牌譜だけ登録し直せば解決すると思うので。
(ID欄を消して牌譜を登録すればOK)
Posted by idaten! at 2010年02月08日 09:24
>nisiさん

>字牌待ちのシャボ・単騎は抜きで
???

愚形
数牌待ちの(単騎、シャボ)、嵌張、辺張

良形
字牌待ちの(単騎、シャボ)、その他の2面待ち以上

で良いでしょうか?もう少し聞かせて下さい。

・シャボは2種とも字牌の場合ですか?

1.形式上の待ち形
2.見えている残り牌での待ち形
3.実際に山に残っている牌での待ち形
と、3つデータがあるんですけど、たぶん1でやりますよね?


>大量のデータがあればそれ以上の区分けもOKかもしれませんが。

DBでの解析なので、限度はありますが
カテゴリは分けられるだけ分けた方が後から楽だったりします。
けど、私も作業時間がとれなそうなので、今回は筋だけで行きますね。

で、なんとか今月中には作業が終わればいいかなと思っています。
作業自体は1日もかからないんですけど(´Д⊂
Posted by idaten! at 2010年02月08日 09:42
>nisiさん

もう1点

>ある順目の

とありますが、立直者に対して切った順目は関係ないのでは?
立直者の立直順目ならデータがあります。
Posted by idaten! at 2010年02月08日 23:15
>字牌待ちのシャボ・単騎は抜きで

攻める人数が多くなると待ち牌の数が少ない字牌待ちは大していい待ちでなくなるという考えでそういう風に書きましたが、
攻めるのが自分とリーチ者+たまに他家もぐらいだったら字牌待ちも良形でいいかもしれません。
訂正でお願いします。

>ある順目の

順目別の放銃率は現物等の種類数に大きく依存する(現物種類数が多ければ相対的に非現物の放銃率は上がる)と考えられるので、
現物数を考えると切った順目の方が立直順目より影響でかいと考えられます。
立直がかかってからすぐと数順たった後だと現物が増えてる分、
同じ待ちだとしても明らかに非現物の放銃率は上がってます。

まぁ、基本的に立直後数順で決着つくこと多いので両者はかなり正相関しそうですが、
切る順目で考えた方が正確性は高いですし、
既存ではないから難しいかもしれないですが、切る順目のほうで一つお願いしたいです。
Posted by nisi at 2010年02月08日 23:47
>良形・愚形
了解です。
まぁこの区分けは、ある程度後から変更できると思います。

>順目
なるほど。
確かに、現物によって待ち候補が減っていく分、後から出す非現物は立直時より放銃率が高いですね。

ただ、その考えでいくと順目ではなく立直者に対する現物種類数と、ある牌の放銃率がより正確なデータと言う事になりますか?

現物の種類数を数えるのは実践を考えると現実的じゃないし、順目でも十分な意味があると思うのでわざわざ大変な事をする必要もないですがw

Posted by idaten! at 2010年02月09日 02:32
>nisiさん

忙しいのを言い訳に先延ばししようと思ってましたが、
冷静に考えると時間が経つほど作業時間が取れなくなるので
夜中にがんばってやっちまいました。

とりあえず、良形・愚形分けずのデータです。
そちらのデータとの検証お願いします。

http://sion.mokuren.ne.jp/mjprog/files/data20100209.csv


参考までに、SQLはこんなです。
/* 立直者に対する捨て牌の放銃率 */
SELECT
((s.sute_turn&0xFC)>>2) as "順目",
count(distinct g.game_id) as "試合数",
sum(case when (s.category&0xF) in(5,9) and (s.sutehai&0xF) in(0,8) then 1 else 0 end)/sum(case when (s.category&0xE) in(4,8) and (s.sutehai&0xF) in(0,8) then 1 else 0 end) as "筋19放銃率",
sum(case when (s.category&0xF) in(5,9) and (s.sutehai&0xF) in(1,2,6,7) then 1 else 0 end)/sum(case when (s.category&0xE) in(4,8) and (s.sutehai&0xF) in(1,2,6,7) then 1 else 0 end) as "筋2378放銃率",
sum(case when (s.category&0xF) in(5,9) and (s.sutehai&0xF) in(3,4,5) then 1 else 0 end)/sum(case when (s.category&0xE) in(4,8) and (s.sutehai&0xF) in(3,4,5) then 1 else 0 end)as "片筋456放銃率",
sum(case when 0xD=(s.category&0xF) and (s.sutehai&0xF) in(3,4,5) then 1 else 0 end)/sum(case when 0xC=(s.category&0xE) and (s.sutehai&0xF) in(3,4,5) then 1 else 0 end)as "両筋456放銃率",
sum(case when 0x1=(s.category&0xF) and (s.sutehai&0xF) in(0,8) then 1 else 0 end)/sum(case when 0x0=(s.category&0xE) and (s.sutehai&0xF) in(0,8) then 1 else 0 end) as "無筋19放銃率",
sum(case when 0x1=(s.category&0xF) and (s.sutehai&0xF) in(1,2,6,7) then 1 else 0 end)/sum(case when 0x0=(s.category&0xE) and (s.sutehai&0xF) in(1,2,6,7) then 1 else 0 end) as "無筋2378放銃率",
sum(case when 0x1=(s.category&0xF) and (s.sutehai&0xF) in(3,4,5) then 1 else 0 end)/sum(case when 0x0=(s.category&0xE) and (s.sutehai&0xF) in(3,4,5) then 1 else 0 end) as "無筋456放銃率"

FROM
tenhou_reach_sute s
,tenhou_game_info g

WHERE
s.game_id=g.game_id
and g.game_sanma=0 /* 四麻 */
and g.game_disc=0 /* 切断なし */

GROUP BY
((s.sute_turn&0xFC)>>2)
;
Posted by idaten! at 2010年02月09日 09:20
>ただ、その考えでいくと…
>現物の種類数を数えるのは…

その通りです。現物だけでなくスジ牌や出てる字牌の状況etcも影響してくるので、順目だけで大雑把に捉えてしまう方がいいと判断しました。

>とりあえず、良形・愚形分けずのデータです。

ダウンロードしたら全くデータが入っていないエクセルファイルが。
なんでだろ?
いずれにしても仕事が速くて助かります!
ありがとうございます。

SQL見る限り(やったこと無い言語なんでよく分かりませんが)
字牌がないみたいですがどうなってるでしょう。
私は切る人から見て見えてる枚数が
1〜2枚なら「字牌」
3枚なら「単騎字牌」
4枚なら「現物」
に区分してます。
今はデータが見れない以上なんともいえませんが。
Posted by nisi at 2010年02月09日 22:09
ホントだ、というか、手元にあるファイルもサイズが0だ。
ダウンロードまでチェックしたはずなのにアレはいったい…
深夜はダメだな


こういう時、DBはファイルを直解析するより早くて助かりますがw
と、思ったらSQL走らすためのtmp領域が足りないし!
泣けてくる…

まぁ、なんとかデータ取り直しました。
http://sion.mokuren.ne.jp/mjprog/files/data20100209.csv

字牌忘れてました(汗
ただ、字牌の見えている枚数は考慮しないで集計しちゃたので、今回はこういうデータしかでません。

sum(case when 0x1=(s.category&0x1) and (s.sutehai&0xF) = 9 then 1 else 0 end)/sum(case when (s.sutehai&0xF) = 9 then 1 else 0 end) as "捨て牌東",
sum(case when 0x1=(s.category&0x1) and (s.sutehai&0xF) in (9,10,11,12) then 1 else 0 end)/sum(case when (s.sutehai&0xF) in (9,10,11,12) then 1 else 0 end) as "捨て牌風牌",
sum(case when 0x1=(s.category&0x1) and (s.sutehai&0xF) in (13,14,15) then 1 else 0 end)/sum(case when (s.sutehai&0xF) in (13,14,15) then 1 else 0 end) as "捨て牌三元牌"
Posted by idaten! at 2010年02月10日 00:08
直接比較可能だった無筋456とスジ2378で比べるとおおむね同様の数値でした。データ数が多い分、誤差部分の変動が小さそうですしよりいい感じのデータです。
一目字牌部分が異質ですが単騎字牌(3枚見え)や現物扱い(4枚見え)の構成割合が変化するためと判断すればよさそうです。

ややこちらはカテゴリ分けが大雑把なので、
数値を統合できるよう当たった回数と切った回数の別で出していただけると助かります。放銃率は両者を割ったらすぐに出るものですし。

やや順目に対する考え方が違うようで22順目なんてところもあるようですが、適当にこちらで補正手段を考えておきます。
Posted by nisi at 2010年02月10日 11:28
字牌ですか。
検証したいのは山々ですが、予想通り時間が取れなくなってきました。
おかしければ無視して下さい。

順目については、どう数えるのが一般的なんでしょうか?
18順固定とすると、ツモ4回で+1ですか?

今回は親を通過したら+1する場共通の順目を使いました。
あとは一人一人で別で、牌を持ってきたら+1する順目もありますが今回は使ってません。

簡単に修正できそうなら、解析をやりなおしますんで言って下さい。

あぁ大筋で大丈夫そうなので、良形・愚形で分類して回数で出すSQLを書き始めますね。
といっても、もうしばらく時間がかかりそうですが。
Posted by idaten! at 2010年02月13日 12:33
>今回は親を通過したら+1する場共通の順目を使いました。

なるほど。それだとポンが多いと20順越えも普通にありますね。
一般的かは分かりませんが、私は捨て牌4枚(鳴かれた牌も含む)で1順(共通の順目で)と数えました。たまに19順にも到達しますが、数的に少数なんで全部18順目に編入させてます。
他には8行動(ツモ、捨て、チー、リーチetc×8)で1順と数えてる方もいるようです。
ツモ4回(リンシャンツモ含む)で1順も捨てがたいですね。確実に17順+2人で終わりますし。
おそらく後ろ3者はそこまで大きく変わりそうな感じはないですけど、データを見させていただく限り親通過で1順はさすがに同一で比べるのはしんどそうです。
18順目以降もかなり多くのデータ数がありそうなんで全部18順目に入れてしまうとデータがゆがみそうですし。
補正がうまくいけばいいですけどできれば生のままのデータで調べたいですしね。

字牌は見えてる枚数で分類されればたぶん合うんだろうと思います。
見えてる枚数は考慮できそうですかね?
字牌では特に放銃率への影響がでかいので…
Posted by nisi at 2010年02月13日 16:52
>順目
なるほど、なるほど。
捨て牌を数えるくらいは簡単にできるので、解析し直そうと思います。

>字牌
解析し直すので、見えている牌も考慮できます。

さて、次はちょとと気長にお待ち下さい。
Posted by idaten! at 2010年02月15日 08:51
spamコメントが来るので、このエントリーへのコメントは閉鎖しました。
Posted by idaten! at 2010年03月17日 13:31
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/34998975
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック