FC2ブログ

*All archives* |  *Admin*

<<05  2020/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枚以上確定になるし、それ以外の他家に関しては使えないことになる。)、(染め手の場合)染め色の赤が確定しているor不確定だが使える可能性があるor使えないといった区別をしなければいけないので、結構大変でした。

かなり処理が冗長になった感はあるけれど、やむを得ないです。実際、計算にかかる時間も心なしか増えたような気がします。

細かいところはチェックして(処理を1行ずつ追ってみて)多分大丈夫そうなので、全体を動かして眺めてみます。

150606-01.png
先制両面36,47待ち聴牌(他家動きなし)の場合の祝儀枚数。

大体ホーリー本に載ってるのに近いものが再現できたかなぁと思います。悪くないです。
150606-02.png
先制カンペン37待ち聴牌(他家動きなし)の場合の祝儀枚数。

ホーリー本のグラフと比べてダマの赤1枚と赤2枚のところが低めに出ています。ちょっとあまりよろしくないです。

8巡目愚形ダマ赤1枚の和了率等。
ツモ和了 ロン和了 放銃 被ツモ 横移動 聴牌流局 不聴流局 期待値 現局チップ
0.1534 0.3467 0.1318 0.1273 0.1653 0.0755 0 1055.92 0.5781

ツモ和了のとき、1枚オールで+3枚、ロン和了のとき、+1枚、放銃と被ツモの時はリーチと非リーチの中間をとって‐0.8枚くらいとすると、0.1534*3+0.3467*1-0.1318*0.8-0.1273*0.8=0.59962

(この和了率等の確率が大体合ってるとするならば、)概算したのと今回のシミュレーション結果はそこまで齟齬はない感じです。
どこが変なのかなぁ…。

とりあえずこの件に関しては保留としておきます。
祝儀ルールについての改造論その2・一発裏なしハン数符数分布と裏ドラ率
昨日、一発裏なしデータを取る困難さにピンチを迎えたが、何とか克服。
全部の役を数え上げるのは結構大変だった…。

↓が上がりハンと符数の素データ。親子別・ツモロン別・上がり方の別です。
「染め」になってるのは1副露以上で捨て牌が染め風になってるもの(最初の6巡以内の捨て牌に染め色がなく、字牌が1枚以下)。
「副露」については面前の暗槓は副露に含めないものとします。
「ダマ」はリーチでも染めでも副露でもない上がりとします。
150605-01.png
次に他家リーチの裏ドラ率(刻子数不明)。
カン裏も込みの数値とカン裏がない数値の2種類を取ります。
150605-02.png

後は赤ドラの仮定をどうするか。
赤ナシと赤ありの平均打点的の差的に考えると赤ドラ1枚当たり0.2枚にするとちょうどよくなります。
大雑把には赤5が4人の手牌+捨て牌か山に残ってるかで5分の1の確率で特定の他家に赤ドラが含有されてるイメージです。

ただ、自手の赤の枚数が既知という仮定があります。
極論すれば自手に3枚赤があれば他家は1枚も使えない(確率0)である一方、
自手に赤がなければ0.2枚(×3)よりは大きくなりそうです。

自手にない赤については4人か山のうち、自手にはないものとするので、残り4分の1、ということで0.25枚あたりに設定しておきます。

また、染め副露に関しては別のアプローチが必要です。
染め色の赤はかなり使いやすい(また、赤5があるから染め色を集めるという論理もある)一方、非染め色の赤は基本的に使えないです。
とりあえず自手にない染め色赤は1枚当たり0.4枚あたりにして、非染め色は0枚ということにします。

これらの仮定はかなり粗いです。後から簡単に変更できるように設計(パラメータ表に記述しておけば、該当の数値をいじるだけで修正できる)をしておきます。


これで、現局の祝儀の算定に必要なデータは出そろったことになりますので、これをもってシミュレータの改造を進めていきます。
祝儀ルールについての改造論その1.5・ちょっとやばいかも
一発裏の効果を除去したハン数符数分布を出すのはそんなに難しくないだろう、とタカをくくってました。

甘かったです。
mjscoreのテキスト形式が初めて牙をむいてきました。

具体的にはこんな感じの記述の時。


満貫ロン 平和 リーチ 一発 ドラ2


よくあることですが、(一発裏なしだと平和 リーチで2ハン30符)
この記述だけだと一発裏がある時に4ハンなのか5ハンなのかが分かりません。
なので、一発と裏ドラの分、3ハン割り引こうとすると1ハンなのか2ハンなのかが判別できないという困ったことが発生します。
跳満以上の時も同様です。

また、符数も不明(満貫以上だと符数を書いてくれない)ので、一発裏がついて満貫以上になった時困ります。

最悪、ハン数については全部の役(一発裏以外)を数え上げる(これでもかなり大変)ことで対応できますが、
符数についてはどうにもならない(一から符数を求める関数をつくるには相当難易度が高い)。

満貫未満と平和と七対子だけはちゃんと定義通りに符数をカウントするものとして、それ以外のケースは既存のリーチツモ時符数とリーチロン時符数を使って推測するしかないです。
150604-01.png
どっちにしてもすごく大変そうだ。
祝儀ルールについての改造論その1・論点整理
私はネット麻雀しかしないので、あまりなじみがないですが、
巷の雀荘屋さんでは祝儀というルールが流行ってるらしいです。

一発と裏ドラと赤ドラがあるとき、ロン和了なら放銃者から1枚*一発裏赤数、ツモ和了なら全員から1枚*一発裏赤数のチップをもらえる(という認識であってるだろうか。)

このうち一発と裏ドラはシミュレーション内で制御可能で、赤ドラも専用に入力するスペースを設ければいけそうです。
というわけで、この際なんで祝儀ルールもシミュレーションできるようにやってみようと思います。

とりあえず今日まででできたのは、現局の自分和了時の祝儀枚数の制御とテキストファイルへの書き出しまで。

やらないといけないことをまとめてみると、
○現局被和了時の支払祝儀
・祝儀そのもの(一発はすでに制御できてる。裏ドラと赤ドラについて、適当に仮定を置いて制御する。)
・打点(現状、赤ドラと裏ドラ込みのリーチ一発・リーチ非一発・副露・染め副露・ダマのハン数・符数分布としているが、裏ドラと赤ドラを別分けにする必要があるので、一発・裏ドラ・赤ドラなしのハン数・符数分布を出す必要がある。)

○次局以降の点棒・祝儀のやり取り
・点棒(現局被和了時と同様、一発・裏ドラ・赤ドラなしのハン数符数分布を出して、一発・裏ドラ・赤ドラを後付けする。)
・リーチor非リーチの制御
・一発の制御(リーチ時一発率を測定)
・裏ドラの制御(現状、刻子数による裏ドラ率だが、刻子数関係なしの裏ドラ率を測定する必要がある。)
・赤ドラの制御(適当に仮定する。)
・祝儀のやり取り(↑で制御してる一発・裏ドラ・赤ドラに基づいて、祝儀をやり取りする。)

データ取りとしてはそこまで多くないけど、シミュレーションの改造はそこそこの規模になりそう。
プロフィール

nisi5028

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

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

この人とブロともになる

QRコード
QRコード