堕天使の煉獄
2017-01
04
08:25:36
基本が一番難しい
ブラックラグーン春再開予定だとか。
後はバスタードとジオブリとワイルダネス再開しないかなー。
そんな感じで麻雀PG。
そろそろ立直とかそのへんのちゃんとした進行出来る用にしていかないとなーというところで、とりあえずロンと鳴き実装。
といっても、今は国士と四暗刻と七対子決め打ちルーチンのみなので、ロンは出来てもポン、チーはする理由ないので関数空欄ですが。
仕組みの外枠だけと行った感じぽ。
で、ロンつけたのでまたちょっと統計を。
############################################
国士無双
ロン追加
10000/113
自摸 4
ロン 59
フリテン自摸43
十三面待ち自摸 0
十三面待ちロン 7
ロン不可フリテン0
追加前(自摸のみ)
10000/35
十三面待ち1
フリテン28
############################################
七対子
ロン追加
10000/2465
自摸 765
ロン 1686
ロン不可フリテン13
10000/2472
自摸 753
ロン 1703
ロン不可フリテン16
追加前(自摸のみ)
10000/952
10000/1013
10000/1001
10000/1024
############################################
四暗刻
ロン追加
10000/381
四暗刻自摸 77
四暗刻単騎自摸 2
四暗刻単騎ロン 4
三暗刻対々ロン 297
三暗刻対々ロンは実際和了処理はせず見逃しで四暗刻狙った形にしてるので、四暗刻の和了回数381は三暗刻対々ロン見逃しの四暗刻自摸の場合カウントは+2されるのでその分多めに見積もられてるぽ。
追加前(自摸のみ)
10000/88
四暗刻単騎 1
10000/104
四暗刻単騎 4
10000/96
四暗刻単騎 5
やっぱロン入れると、単純に自摸回数が*3の感じで2~3倍程度最終的な和了回数増えてますね。んでも七対子、4局に一回、和了25%の確率にまで。フリテン思ったより少ないぽ。
んでも不思議に思ったことが一つ。
四暗刻ではフリテン和了不可が数万局回しても一回も出てこなかったなと。
でも四暗刻で捨て牌に当り牌のあるフリテン状態って普通に考えて殆どないケースだよなと。基本的に残り枚数が多い物を優先する作りになってるので、一枚自分で捨てて場にでたものをそこから一枚ずつ暗刻で三枚自摸って来ることは確率的にも薄いし、一枚捨ててる時点で次に自摸ってきても不要牌リストに載りやすく、そこから三枚、もしくは頭待ちの単騎にすらもなりづらいしかなり狭い限定条件でないとでない状況のような。
あともっと根本的なところで、テストの時は四暗刻なら4人とも四暗刻な思考ルーチンいれてるんですけど、そうなると基本的にみんな牌は暗刻にしようとしてガメてて、不要牌は容赦なく捨ててくノーガード戦法なのでロンは出やすいんだよなと。
国士の方も、全員が一九字牌一枚がめたらあとは即自摸切り(頭候補のぞく)なので、むしろロン出やすい状況になってるような。
4枚を全員が一枚ずつ持っていても最後の頭のダブり以外は競合しないってのもあるし。
七対子も対子は二枚なので同じ対子をもう一人ももてるので競合し難い感じで、これが四暗刻と七対子ねらい二人づつだったらまた全然和了率変わっちゃうだろうなーとか。
その辺でやっぱ今の統計の取り方って、なんとなく漠然とした出現率的なものを材料にはなりそうだけど、実際の足の引っ張り合いとかの駆け引きのある戦いの中ではあまり参考にならない数字のような気がしたり。
でもやっぱ極端なというか特殊な牌姿の役ばかりというのも不味いんだろうなと……。
てことで平和とか断ヤオとか狙う平手をやっぱ作らないと話にならないなーと。
でもその平手、教科書的な、いわゆるメンタンピン狙いて、なんだかんだでこれが一番難しいんですよね……。
基本的にはこの辺の処理は、
1.頭候補を決めてその牌を抜く。
2.順子、刻子が出来たらその都度抜いていく
3.4面子+1雀頭の形になったら和了系として記録
これを頭候補の数だけ繰り返して、一番高い手のものを和了役とする。
みたいな流れで、ちなみにこれは和了判定のルーチンですね。
(実際はこの前に国士七対子チェックを先にやる)
つまり自摸して手牌に14牌ある状態。
で、自摸前13牌の状態の場合は
3.のところで後一面子足りない形になったとき=聴牌で、どの牌を足せば面子が出来るか=当り牌候補が出る感じと。
てな感じで基本は頭候補から探していくのが基本ぽ。
(対子が一個も無い時は4面子出来ればあとは単騎待ちもしくはシャボとかノベタンとか)
んで、頭候補の数だけ各チェックも繰り返すので清一色とかになるとかなり処理の回数増えるぽ。
順子は4567とあったら456、567の二つ重なった部分のある二つの順子ができるし、待ちの方も36自摸って来たら345、456の順子完成の67残りで58の両面待ちが残る。58自摸ると逆の45残しの36待ち。さらには頭がない状況だと47待ちのノベタン。聴牌してないときなら3か8を自摸って来たならたとえば3自摸なら、34567で258の三面待ちの多面系になるので、4567から4か7を落して面子確定させちゃうかは他の面子の状況次第……。
なんてのは頭で考える分にはさくっとできても、それをいざプログラムのコードで表現しようと思うと……
なにげにここ数年、やねうらお氏のブログから将棋の電王戦回りもぼちぼちみてたんですけど、最近のトレンド? 的にはこゆのをちまちま状態とかフラグとかやりくりしてちまちま思考ルーチンをコーディングする次元じゃなくなってるんだなーと。時代はディープラーニングですか……。
でもこの電王戦での将棋AI開発者のブログなどから触発された人も多く、麻雀のAI開発にも……と考える人も居るようだけど……将棋だとイメージしづらいので単純なマルバツゲーム(井の中にマルバツ書いて三つそろったら勝ちのやつね)で考えると、こことここに○置いたときにここに×無かったら必勝。とか確定条件がすぐに見つかるじゃないですか。
将棋とかはそれの拡大版(でも将棋は成るとか相手の手を自分の手に変えられると言うところから複雑さが段違いらしいけど。この例だとオセロとか囲碁のが適切かな)な感じじゃないですか。
でも麻雀は全部の牌を使えるわけでもなく、ましてや王牌のなかの死に牌なんてのもあるしで、どんなに頑張ってもせいぜい「その時点での確率的に有利だと思われる手の候補」を並べるだけにとどまるしかないんですよね。
そんでもって、実経験からしても……「下手の考え休むに似たり」で、途中であれこれ考えて、手を変えたりすると結局和了れない。なんてことが多い。
そんなこんなで、べつにもともと自然な感じで打てる強いAI雀士を作りたいなんてのは最初から考えてないので、とりあえずどうすべかなーというところで
1.一九字牌、一九、字牌、風牌、三元牌、老頭牌、三色別、順子、暗刻、対子のそれぞれの数を数える。
2.
カウントした数から狙えそうな形を検索
一九字牌→国士、全帯
一九→清老頭、全帯
字牌→字一色、役牌、混一
風牌→大四喜和、小四喜和、役牌、混一
三元牌→大三元、小三元、役牌、混一
暗刻→四暗刻、三暗刻、
対子→七対子
老頭牌、三色別、順子→
色が偏ってる→清一色、一気通貫
ばらけてる→三色
それ以外→一盃口
そのなかで条件的に満たせそうなら平和、断ヤオ
て感じで役決め打ち。完成系もある程度決め打ち。
最初から完成系をもとに必要牌、不要牌をリストアップ
3.自摸
必要牌リストにあれば手牌にくわえる。無ければ捨てる。
手牌にくわえたときに不要牌リストから一枚捨てる。
牌の残り枚数考慮して完成系が和了可能状態かチェック。
和了不可能になってたら、手換え(面子一つ捨てるなど)で継続できないか見る。
それでも無理なら1.に戻って再検証。
な感じで、いいんじゃないかなーとか。
これで何処までまともに打てるのかしらんけど(ぉ
んでもこれだととりあえず、自摸順の時、必要牌不要牌リスト参照で用がすめばあとは和了判定(4面子+1雀頭)のチェックだけで済むので非常に軽い。
頑張って牌効率とか考えなくてもこれでそれなりに打てるんならこれでいいんじゃないかなーとか。実際にやってみないと判らないですけど。
まあ形勢判断(今の順位とか、今の手の和了点数とか、他家の立直、聴牌気配etc……)とかいろいろと考慮するのもはまだ多いですけど。
あと考えるとしたら、一色限定の中での面子構成の効率あたりは必要かなと。上に書いた両面待ちとか三面待ちとかなるべく有利な形で~みたいなの。
でも三色目があると順子の番号も動かせなくなったりとか、他の色の面子も考慮にいれる必要でてくるなぁ。三色は二飜だけど、残り自摸回数と持ち点と順位的に待ちを結果狭くしてでも三色の二飜とりたい状況なのかとか、三色よりもタンピンで二飜とれるやん……とか三色タンピンで満貫確定狙うのかとか、とにかく和了たいので速さ優先で待ちの数増やすべき場面かとか……ああイカン……やっぱ麻雀奥深いw
後関係無いですけど、雀頭……「じゃくとう」と覚えてましたが「じゃんとう」なんですね……。
ATOKに麻雀用語辞書入れたのになんで候補で無いんだーとおもったらw
何処で間違えた……_| ̄|○
ちなみに[雀頭 じゃくとう]でググると雀頭筆という筆がヒットしますね。麻雀関係ではまったくヒットせず。
つまり、どっちの読み方もあるよパターンではなく、絶対的に間違えて覚えてたパターンですね。しょぼん。
も一つ余談。
麻雀やり始めの頃は、よく「頭がない~頭がない~」っていう状態に良くなったっけか。初心者にありがちw
最初から役の形を漠然と考えられるようになると、最後に頭がないと言う状況にはなりにくい感じになるので。
んでも面子構成を走査するルーチンがまず雀頭からというのが基本というのはなんだか暗示的だなーとかふとおもたり。
単純に効率重視するとその形になるんでしょうけど、役作りの上でもまず頭を想定するというのが大事という感じなんだなーとか。
んでもまあケースバイケースで頭固定すると手が伸びにくくなるという考え方もあるのでアレですけど。
なんだかんだで麻雀PG考えるだけでおいらの雀力あがってたりしてるぽ? とか(ぉ
ルールの理解と本質の理解はうんぬんかんぬん……w
後はバスタードとジオブリとワイルダネス再開しないかなー。
そんな感じで麻雀PG。
そろそろ立直とかそのへんのちゃんとした進行出来る用にしていかないとなーというところで、とりあえずロンと鳴き実装。
といっても、今は国士と四暗刻と七対子決め打ちルーチンのみなので、ロンは出来てもポン、チーはする理由ないので関数空欄ですが。
仕組みの外枠だけと行った感じぽ。
で、ロンつけたのでまたちょっと統計を。
############################################
国士無双
ロン追加
10000/113
自摸 4
ロン 59
フリテン自摸43
十三面待ち自摸 0
十三面待ちロン 7
ロン不可フリテン0
追加前(自摸のみ)
10000/35
十三面待ち1
フリテン28
############################################
七対子
ロン追加
10000/2465
自摸 765
ロン 1686
ロン不可フリテン13
10000/2472
自摸 753
ロン 1703
ロン不可フリテン16
追加前(自摸のみ)
10000/952
10000/1013
10000/1001
10000/1024
############################################
四暗刻
ロン追加
10000/381
四暗刻自摸 77
四暗刻単騎自摸 2
四暗刻単騎ロン 4
三暗刻対々ロン 297
三暗刻対々ロンは実際和了処理はせず見逃しで四暗刻狙った形にしてるので、四暗刻の和了回数381は三暗刻対々ロン見逃しの四暗刻自摸の場合カウントは+2されるのでその分多めに見積もられてるぽ。
追加前(自摸のみ)
10000/88
四暗刻単騎 1
10000/104
四暗刻単騎 4
10000/96
四暗刻単騎 5
やっぱロン入れると、単純に自摸回数が*3の感じで2~3倍程度最終的な和了回数増えてますね。んでも七対子、4局に一回、和了25%の確率にまで。フリテン思ったより少ないぽ。
んでも不思議に思ったことが一つ。
四暗刻ではフリテン和了不可が数万局回しても一回も出てこなかったなと。
でも四暗刻で捨て牌に当り牌のあるフリテン状態って普通に考えて殆どないケースだよなと。基本的に残り枚数が多い物を優先する作りになってるので、一枚自分で捨てて場にでたものをそこから一枚ずつ暗刻で三枚自摸って来ることは確率的にも薄いし、一枚捨ててる時点で次に自摸ってきても不要牌リストに載りやすく、そこから三枚、もしくは頭待ちの単騎にすらもなりづらいしかなり狭い限定条件でないとでない状況のような。
あともっと根本的なところで、テストの時は四暗刻なら4人とも四暗刻な思考ルーチンいれてるんですけど、そうなると基本的にみんな牌は暗刻にしようとしてガメてて、不要牌は容赦なく捨ててくノーガード戦法なのでロンは出やすいんだよなと。
国士の方も、全員が一九字牌一枚がめたらあとは即自摸切り(頭候補のぞく)なので、むしろロン出やすい状況になってるような。
4枚を全員が一枚ずつ持っていても最後の頭のダブり以外は競合しないってのもあるし。
七対子も対子は二枚なので同じ対子をもう一人ももてるので競合し難い感じで、これが四暗刻と七対子ねらい二人づつだったらまた全然和了率変わっちゃうだろうなーとか。
その辺でやっぱ今の統計の取り方って、なんとなく漠然とした出現率的なものを材料にはなりそうだけど、実際の足の引っ張り合いとかの駆け引きのある戦いの中ではあまり参考にならない数字のような気がしたり。
でもやっぱ極端なというか特殊な牌姿の役ばかりというのも不味いんだろうなと……。
てことで平和とか断ヤオとか狙う平手をやっぱ作らないと話にならないなーと。
でもその平手、教科書的な、いわゆるメンタンピン狙いて、なんだかんだでこれが一番難しいんですよね……。
基本的にはこの辺の処理は、
1.頭候補を決めてその牌を抜く。
2.順子、刻子が出来たらその都度抜いていく
3.4面子+1雀頭の形になったら和了系として記録
これを頭候補の数だけ繰り返して、一番高い手のものを和了役とする。
みたいな流れで、ちなみにこれは和了判定のルーチンですね。
(実際はこの前に国士七対子チェックを先にやる)
つまり自摸して手牌に14牌ある状態。
で、自摸前13牌の状態の場合は
3.のところで後一面子足りない形になったとき=聴牌で、どの牌を足せば面子が出来るか=当り牌候補が出る感じと。
てな感じで基本は頭候補から探していくのが基本ぽ。
(対子が一個も無い時は4面子出来ればあとは単騎待ちもしくはシャボとかノベタンとか)
んで、頭候補の数だけ各チェックも繰り返すので清一色とかになるとかなり処理の回数増えるぽ。
順子は4567とあったら456、567の二つ重なった部分のある二つの順子ができるし、待ちの方も36自摸って来たら345、456の順子完成の67残りで58の両面待ちが残る。58自摸ると逆の45残しの36待ち。さらには頭がない状況だと47待ちのノベタン。聴牌してないときなら3か8を自摸って来たならたとえば3自摸なら、34567で258の三面待ちの多面系になるので、4567から4か7を落して面子確定させちゃうかは他の面子の状況次第……。
なんてのは頭で考える分にはさくっとできても、それをいざプログラムのコードで表現しようと思うと……
なにげにここ数年、やねうらお氏のブログから将棋の電王戦回りもぼちぼちみてたんですけど、最近のトレンド? 的にはこゆのをちまちま状態とかフラグとかやりくりしてちまちま思考ルーチンをコーディングする次元じゃなくなってるんだなーと。時代はディープラーニングですか……。
でもこの電王戦での将棋AI開発者のブログなどから触発された人も多く、麻雀のAI開発にも……と考える人も居るようだけど……将棋だとイメージしづらいので単純なマルバツゲーム(井の中にマルバツ書いて三つそろったら勝ちのやつね)で考えると、こことここに○置いたときにここに×無かったら必勝。とか確定条件がすぐに見つかるじゃないですか。
将棋とかはそれの拡大版(でも将棋は成るとか相手の手を自分の手に変えられると言うところから複雑さが段違いらしいけど。この例だとオセロとか囲碁のが適切かな)な感じじゃないですか。
でも麻雀は全部の牌を使えるわけでもなく、ましてや王牌のなかの死に牌なんてのもあるしで、どんなに頑張ってもせいぜい「その時点での確率的に有利だと思われる手の候補」を並べるだけにとどまるしかないんですよね。
そんでもって、実経験からしても……「下手の考え休むに似たり」で、途中であれこれ考えて、手を変えたりすると結局和了れない。なんてことが多い。
そんなこんなで、べつにもともと自然な感じで打てる強いAI雀士を作りたいなんてのは最初から考えてないので、とりあえずどうすべかなーというところで
1.一九字牌、一九、字牌、風牌、三元牌、老頭牌、三色別、順子、暗刻、対子のそれぞれの数を数える。
2.
カウントした数から狙えそうな形を検索
一九字牌→国士、全帯
一九→清老頭、全帯
字牌→字一色、役牌、混一
風牌→大四喜和、小四喜和、役牌、混一
三元牌→大三元、小三元、役牌、混一
暗刻→四暗刻、三暗刻、
対子→七対子
老頭牌、三色別、順子→
色が偏ってる→清一色、一気通貫
ばらけてる→三色
それ以外→一盃口
そのなかで条件的に満たせそうなら平和、断ヤオ
て感じで役決め打ち。完成系もある程度決め打ち。
最初から完成系をもとに必要牌、不要牌をリストアップ
3.自摸
必要牌リストにあれば手牌にくわえる。無ければ捨てる。
手牌にくわえたときに不要牌リストから一枚捨てる。
牌の残り枚数考慮して完成系が和了可能状態かチェック。
和了不可能になってたら、手換え(面子一つ捨てるなど)で継続できないか見る。
それでも無理なら1.に戻って再検証。
な感じで、いいんじゃないかなーとか。
これで何処までまともに打てるのかしらんけど(ぉ
んでもこれだととりあえず、自摸順の時、必要牌不要牌リスト参照で用がすめばあとは和了判定(4面子+1雀頭)のチェックだけで済むので非常に軽い。
頑張って牌効率とか考えなくてもこれでそれなりに打てるんならこれでいいんじゃないかなーとか。実際にやってみないと判らないですけど。
まあ形勢判断(今の順位とか、今の手の和了点数とか、他家の立直、聴牌気配etc……)とかいろいろと考慮するのもはまだ多いですけど。
あと考えるとしたら、一色限定の中での面子構成の効率あたりは必要かなと。上に書いた両面待ちとか三面待ちとかなるべく有利な形で~みたいなの。
でも三色目があると順子の番号も動かせなくなったりとか、他の色の面子も考慮にいれる必要でてくるなぁ。三色は二飜だけど、残り自摸回数と持ち点と順位的に待ちを結果狭くしてでも三色の二飜とりたい状況なのかとか、三色よりもタンピンで二飜とれるやん……とか三色タンピンで満貫確定狙うのかとか、とにかく和了たいので速さ優先で待ちの数増やすべき場面かとか……ああイカン……やっぱ麻雀奥深いw
後関係無いですけど、雀頭……「じゃくとう」と覚えてましたが「じゃんとう」なんですね……。
ATOKに麻雀用語辞書入れたのになんで候補で無いんだーとおもったらw
何処で間違えた……_| ̄|○
ちなみに[雀頭 じゃくとう]でググると雀頭筆という筆がヒットしますね。麻雀関係ではまったくヒットせず。
つまり、どっちの読み方もあるよパターンではなく、絶対的に間違えて覚えてたパターンですね。しょぼん。
も一つ余談。
麻雀やり始めの頃は、よく「頭がない~頭がない~」っていう状態に良くなったっけか。初心者にありがちw
最初から役の形を漠然と考えられるようになると、最後に頭がないと言う状況にはなりにくい感じになるので。
んでも面子構成を走査するルーチンがまず雀頭からというのが基本というのはなんだか暗示的だなーとかふとおもたり。
単純に効率重視するとその形になるんでしょうけど、役作りの上でもまず頭を想定するというのが大事という感じなんだなーとか。
んでもまあケースバイケースで頭固定すると手が伸びにくくなるという考え方もあるのでアレですけど。
なんだかんだで麻雀PG考えるだけでおいらの雀力あがってたりしてるぽ? とか(ぉ
ルールの理解と本質の理解はうんぬんかんぬん……w
Sun
Mon
Tue
Wed
Thu
Fri
Sat
01
■
■
うすぼんやりあけおめ
[元日]
[元日]
02
■
■
確率と経験則
[振替]
[振替]
03
■
■
やはり統計的には……
04
■
■
基本が一番難しい
05
06
07
08
■
■
ラカンあかん人やったんや
09
[成人の日]
10
11
12
13
14
15
16
■
■
冬眠してた
17
18
19
■
■
ぷちあっぷでーと
20
21
22
23
24
25
26
■
■
ぷち大掃除
27
28
29
30
31
total:2080401 t:2771 y:180
■記事タイトル■
■年度別リスト■
2024年
2024年12月(0)2024年11月(0)
2024年10月(1)
2024年09月(2)
2024年08月(1)
2024年07月(1)
2024年06月(5)
2024年05月(2)
2024年04月(1)
2024年03月(6)
2024年02月(4)
2024年01月(3)
2023年
2023年12月(3)2023年11月(1)
2023年10月(2)
2023年09月(3)
2023年08月(3)
2023年07月(3)
2023年06月(7)
2023年05月(8)
2023年04月(2)
2023年03月(1)
2023年02月(2)
2023年01月(3)
2022年
2022年12月(4)2022年11月(3)
2022年10月(1)
2022年09月(3)
2022年08月(3)
2022年07月(2)
2022年06月(1)
2022年05月(3)
2022年04月(2)
2022年03月(2)
2022年02月(1)
2022年01月(6)
2021年
2021年12月(8)2021年11月(3)
2021年10月(4)
2021年09月(6)
2021年08月(2)
2021年07月(1)
2021年06月(3)
2021年05月(2)
2021年04月(2)
2021年03月(3)
2021年02月(1)
2021年01月(4)
2020年
2020年12月(3)2020年11月(7)
2020年10月(2)
2020年09月(3)
2020年08月(1)
2020年07月(3)
2020年06月(7)
2020年05月(5)
2020年04月(8)
2020年03月(4)
2020年02月(2)
2020年01月(4)
2019年
2019年12月(1)2019年11月(1)
2019年10月(2)
2019年09月(1)
2019年08月(3)
2019年07月(2)
2019年06月(2)
2019年05月(2)
2019年04月(4)
2019年03月(1)
2019年02月(7)
2019年01月(1)
2018年
2018年12月(1)2018年11月(1)
2018年10月(5)
2018年09月(1)
2018年08月(5)
2018年07月(1)
2018年06月(1)
2018年05月(1)
2018年04月(2)
2018年03月(2)
2018年02月(1)
2018年01月(1)
2017年
2017年12月(2)2017年11月(1)
2017年10月(2)
2017年09月(5)
2017年08月(8)
2017年07月(2)
2017年06月(1)
2017年05月(1)
2017年04月(3)
2017年03月(5)
2017年02月(7)
2017年01月(8)
2016年
2016年12月(7)2016年11月(2)
2016年10月(3)
2016年09月(7)
2016年08月(8)
2016年07月(10)
2016年06月(17)
2016年05月(6)
2016年04月(8)
2016年03月(10)
2016年02月(5)
2016年01月(10)
2015年
2015年12月(7)2015年11月(7)
2015年10月(13)
2015年09月(7)
2015年08月(7)
2015年07月(5)
2015年06月(4)
2015年05月(5)
2015年04月(2)
2015年03月(4)
2015年02月(1)
2015年01月(7)
2014年
2014年12月(12)2014年11月(8)
2014年10月(4)
2014年09月(6)
2014年08月(7)
2014年07月(4)
2014年06月(2)
2014年05月(5)
2014年04月(4)
2014年03月(8)
2014年02月(4)
2014年01月(8)
2013年
2013年12月(15)2013年11月(8)
2013年10月(3)
2013年09月(3)
2013年08月(8)
2013年07月(0)
2013年06月(0)
2013年05月(0)
2013年04月(0)
2013年03月(0)
2013年02月(0)
2013年01月(0)
■レス履歴■
■ファイル抽出■
■ワード検索■
堕天使の煉獄
https://rengoku.sakura.ne.jp
管理人
織田霧さくら(oda-x)
E-mail (■を@に)
oda-x■rengoku.sakura.ne.jp