概要
麻雀の何切る問題において、打牌の受け入れ枚数、聴牌確率、和了確率、期待値を計算するアプリ「麻雀何切るシミュレーター」について紹介します。
麻雀何切るシミュレーター
麻雀何切るシミュレーター は、手牌を入力すると、以下の情報を計算するアプリです。
- 手牌が13枚の場合は、有効牌を表示します。
- 手牌が14枚の場合は、各打牌の受け入れ枚数、点数期待値、和了確率、聴牌確率を表示します。(4向聴以上の場合は受け入れ枚数のみ)
対応している機能
- 場風、自風、ドラ、槓ドラ、赤ドラ対応、副露した手牌を設定できます。
- 向聴戻し、手変わり、ダブル立直、一発、海底撈月、裏ドラの考慮の有無を設定できます。
- テキスト形式で結果をコピーできます。
- 一般手、七対子手、国士無双手に対応しています。
- 打ち筋を期待値最大化、または和了確率最大化から設定できます。
4向聴以上の手牌の場合、計算量が膨大になり、数秒以内に計算するのが困難であるため、受け入れ枚数のみ表示します。 4向聴以上の場合は、期待値に基づく打牌を行えなくても、孤立字牌など明らかに不要な牌を整理している段階であるため、実用上はさほど困らないかと思います。
免責事項
- プログラムは開発中であり、不具合がある可能性があります。
- アプリが示す上位の打牌が実戦において必ずしも正着であるとは限りません。あくまで参考程度に活用ください。
- 期待値の計算方法については記事 麻雀における期待値の計算方法 を参照ください。
- ご意見や不具合報告がありましたら、こちらの記事のコメント欄か、GitHub のレポジトリ mahjong-cpp の issue にコメントしてください。
何切る問題の例
ネット上で見つけた何切る問題に関して、このアプリで期待値を計算した例を紹介します。計算結果は期待値が高い順に上位の打牌を載せました。
12577m222468p445s (2向聴)
場風牌: 東, 自風牌: 東, 1巡目, 手牌の種類: 一般手, ドラ: [南]
引用元: 現代麻雀技術論 – 牌効率論26.断ヤオ九
シャンテン戻しになってもタンヤオ確定なら孤立3~7>ペンチャン。
計算結果
打: 一萬, 受け入れ枚数: 23種78枚, 有効牌: [123456789m23456789p234567s] 向聴戻し
期待値: 1696点, 和了確率: 18.46%, 聴牌確率: 70.02%
打: 二萬, 受け入れ枚数: 23種78枚, 有効牌: [123456789m23456789p234567s] 向聴戻し
期待値: 1655点, 和了確率: 17.85%, 聴牌確率: 69.37%
打: 四索, 受け入れ枚数: 5種20枚, 有効牌: [3m57p36s]
期待値: 1466点, 和了確率: 20.87%, 聴牌確率: 72.54%
向聴戻しになりますが、断么九を確定させる 12m 辺張落としが良さそうです。
2345m113479p6778s (2向聴)
場風牌: 東, 自風牌: 東, 1巡目, 手牌の種類: 一般手, ドラ: [南]
引用元: 現代麻雀技術論 – 牌効率論56.2シャンテン戻し
2シャンテン戻しのパターン 優良孤立牌(4連形、中膨れ)×2
計算結果
打: 九筒, 受け入れ枚数: 19種64枚, 有効牌: [1234567m1256789p56789s] 向聴戻し
期待値: 2295点, 和了確率: 36.30%, 聴牌確率: 86.42%
打: 七筒, 受け入れ枚数: 18種60枚, 有効牌: [1234567m125789p56789s] 向聴戻し
期待値: 2180点, 和了確率: 34.65%, 聴牌確率: 85.94%
打: 二萬, 受け入れ枚数: 3種12枚, 有効牌: [258p]
期待値: 2117点, 和了確率: 35.73%, 聴牌確率: 86.97%
向聴戻しになりますが、79p 嵌張落としで 2345m、6778s のくっつき狙いが良さそうです。
133789m77p3378s北北 (2向聴)
場風牌: 東, 自風牌: 東, 1巡目, 手牌の種類: 一般手, ドラ: [南]
計算結果
打: 七筒, 受け入れ枚数: 6種18枚, 有効牌: [23m369s北]
期待値: 1301点, 和了確率: 20.03%, 聴牌確率: 69.68%
打: 三索, 受け入れ枚数: 6種18枚, 有効牌: [23m7p69s北]
期待値: 1299点, 和了確率: 20.01%, 聴牌確率: 69.65%
打: 北, 受け入れ枚数: 6種18枚, 有効牌: [23m7p369s]
期待値: 1200点, 和了確率: 20.22%, 聴牌確率: 70.16%
7p または 3s のどちらでも良さそうです。
344678m5r5789p125s (1向聴)
場風牌: 東, 自風牌: 東, 1巡目, 手牌の種類: 一般手, ドラ: [四索]
引用元: No.19851の集計結果 – 麻雀で何切る!?
4m: 48票、1s: 29票、5s: 19票、2s: 14票
計算結果
打: 一索, 受け入れ枚数: 15種50枚, 有効牌: [1234569m5p1234567s] 向聴戻し
期待値: 3743点, 和了確率: 30.64%, 聴牌確率: 84.71%
打: 二索, 受け入れ枚数: 15種50枚, 有効牌: [1234569m5p1234567s] 向聴戻し
期待値: 3694点, 和了確率: 30.04%, 聴牌確率: 84.71%
打: 四萬, 受け入れ枚数: 3種12枚, 有効牌: [25m3s]
期待値: 3537点, 和了確率: 33.21%, 聴牌確率: 86.33%
12s の辺張落としがよいという結果になりました。
79m445789p3489s西西 (2向聴)
場風牌: 東, 自風牌: 東, 1巡目, 手牌の種類: 一般手, ドラ: [七萬]
引用元: 問題No5520の集計結果 – 阿知賀女子学院の「何切る?」
1位: 4p、2位: 5p、3位: 西
計算結果
打: 四筒, 受け入れ枚数: 6種24枚, 有効牌: [8m36p257s]
期待値: 2689点, 和了確率: 22.30%, 聴牌確率: 73.43%
打: 九索, 受け入れ枚数: 7種24枚, 有効牌: [8m346p25s西]
期待値: 2615点, 和了確率: 26.00%, 聴牌確率: 78.73%
打: 八索, 受け入れ枚数: 7種24枚, 有効牌: [8m346p25s西]
期待値: 2600点, 和了確率: 25.96%, 聴牌確率: 78.68%
4p を切って、三色を狙いましょう。
233m34568p223789s (1向聴)
場風牌: 東, 自風牌: 東, 1巡目, 手牌の種類: 一般手, ドラ: [七萬]
計算結果
打: 八筒, 受け入れ枚数: 18種61枚, 有効牌: [12345m12345678p12345s] 向聴戻し
期待値: 4198点, 和了確率: 41.99%, 聴牌確率: 92.93%
打: 三萬, 受け入れ枚数: 3種12枚, 有効牌: [14m7p]
期待値: 3749点, 和了確率: 37.97%, 聴牌確率: 88.56%
打: 二索, 受け入れ枚数: 3種12枚, 有効牌: [7p14s]
期待値: 3726点, 和了確率: 37.91%, 聴牌確率: 88.65%
私は頭固定はしないで 2s か 3m 切りかなと思ったのですが、コンピューターの計算結果によると、向聴戻しの 8p 切りで受け入れを増やすのがよいという結果になりました。気になったので 一人麻雀練習機 のほうでも計算してみましたが、同じく 8p 切りの期待値が一番高くなりました。
666778m677p66778s (1向聴)
場風牌: 東, 自風牌: 東, 1巡目, 手牌の種類: 一般手, ドラ: [六筒]
計算結果
打: 七筒, 受け入れ枚数: 4種14枚, 有効牌: [58p58s]
期待値: 8550点, 和了確率: 43.29%, 聴牌確率: 89.41%
打: 七萬, 受け入れ枚数: 7種21枚, 有効牌: [69m578p58s]
期待値: 8520点, 和了確率: 44.19%, 聴牌確率: 90.15%
打: 六萬, 受け入れ枚数: 4種14枚, 有効牌: [58m58s]
期待値: 6770点, 和了確率: 44.75%, 聴牌確率: 90.29%
7m または 7p 切りで三色を狙いましょう。
まとめ
概ね、人間が考える打牌と同じ結果がコンピューターの計算でも得られることが確認できました。
コメント
コメント一覧 (84件)
気になる解析があったので報告させていただきます。
1112456788999m西の手牌(東場の東家で3巡目、ドラ東の設定です)
上記の九蓮宝燈テンパイの牌姿で、8m切りが最も期待値が高い結果となりました。
しかし、西をピンズやソーズの数牌に変えるとその牌切りが最も期待値が高くなります。
西に限らず残りの1牌を字牌に設定すると同じ解析結果となります。
バグのような気がしますので、お時間あります時に調査いただけますでしょうか?
コメントありがとうございます。
現象を確認しました。数牌にした場合も2番の打8mと期待値の差があまりなく、明らかに不自然なので、バグだと思います。
調査させていただきますので、原因がわかりましたら、ソフトウェアのほうを更新します。
issue に登録しました
https://github.com/nekobean/mahjong-cpp/issues/19
いつもシミュレータにはお世話になっております。
シミュレータの結果について気になる点がありました。
考慮項目の手変わりをありにする場合となしにする場合で、
ありにした方が和了率や期待値が下がる場合がありました。
(12577m222468p445sの打5mなど)
本来であれば選択肢が増える分期待値は上がるものと
思われますので、ご調査いただけないでしょうか。
コメントしていただきありがとうございます。
時々不自然な結果が出ることがあるので、シミュレーションのアルゴリズムになんらか不具合が残っているのかもしれません。年明けになると思いますが、調査します。
issue に登録しました
https://github.com/nekobean/mahjong-cpp/issues/18
いつもお世話になっております。
1233467m3p234789s ドラ表3p
1233467m3p234789s ドラ表(適当な字牌)
この比較をしたとき、なぜか3p切りの期待値が激変していました。
どちらも3p切りの場合ドラ受け入れがなくなるので期待値が大きく変動する要素はないはずなのに、気になります。
調査いただけませんでしょうか?
コメントありがとうございます。
教えていただいた手牌ですが、ドラ表東 (ドラ南)、ドラ表3p (ドラ4p) いずれの場合も打 3p は以下の結果になり、期待値は変化しなかったため、コメントしていただいた 3p の期待値が変化するという事象が確認できませんでした。なにか勘違いをしていたら、すみません。
東一局0本場 東家 3巡目
1233467m3p234789s 1向聴
打: 三筒, 受入枚数: 8種25枚, 有効牌: 12345678m
期待値: 3061点, 和了確率: 47.14%, 聴牌確率: 97.45%
Hello, thank you for your hard work on this software.
I would like to report a result that seems wrong.
It’s very weird that discarding 8p (1740点) is given much higher expected value than 9p (1383点) in this problem:
## 場況
東一局0本場 東家 3巡目 ドラ: 南
33789m35689p2334s 1向聴 (一般手: 1向聴 七対子: 4向聴 国士無双: 11向聴)
## 計算結果
打: 八筒, 受入枚数: 15種49枚, 有効牌: 3m123456789p12345s (向聴戻し)
期待値: 1740点, 和了確率: 25.56%, 聴牌確率: 77.21%
打: 九筒, 受入枚数: 2種8枚, 有効牌: 47p
期待値: 1383点, 和了確率: 22.57%, 聴牌確率: 72.81%
Thank you for reporting the problem. I agree with your comment. There seems to be a bug in this software. I will fix this issue, but it may take some time.
For reference, I list the results of similar software.
discard_tile expected_score_value win_probability
9p 955.46 31.77%
8p 950.04 .30.98%
ref. http://critter.sakura.ne.jp/agari_keisan.html ツモアガリ確率計算機 (tumo probability calculator)
discard_tile expected_score_value win_probability
9p 2067.54 31.59%
8p 2045.65 30.92 %
ref. http://ara.moo.jp/mjhmr/ 一人麻雀練習機 (single player mahjong trainer)
issue に登録しました
https://github.com/nekobean/mahjong-cpp/issues/16
いつもこのシミュレーターにお世話になっております。
同じ牌を4つ含む牌姿で七対子手の検索をかけたら結果が表示されませんでした。仕様でしょうか?
追記です。
色々な牌姿で調べたところ、必ずしも結果が表示されないわけではなく
5種類が対子以上になっている七対子一向聴で同じ牌を4枚にすると結果が表示されないようでした。
一例は
5566m233799p北北北北 (一択何切るというアプリより)
北を2枚にして他の牌を4枚にしても同じく結果が表示されませんでした。
コメントありがとうございます。
同種の4枚の字牌がある手牌において、向聴数計算のアルゴリズムに不具合があるため、正しい結果が表示されないものと思われます。
多くの手牌ではこの問題が影響することは少ないと思いますが、今後修正したいと考えています。
issue に登録しました
https://github.com/nekobean/mahjong-cpp/issues/17
非常に有用なツールで学習に役立っております。ありがとうございます。
ひとつ要望なのですが、テキスト・天鳳形式(234m055p55zのような形式)での出力だけではなく、この形式での手牌入力にも対応していただけないでしょうか。
手元に自分が悩んだ牌姿をこの書き方でメモしてあるので、入力もできるとたいへん助かります。
利用していただきありがとうございます。
期間をいただくかもしれませんが、天鳳形式の入力について将来的に対応したいと思います。
ドラ1p、3巡目、556m1224p1456789s
の牌姿ですが1s切りの期待値、あがり率が異様に低いです。
見ると受け入れ枚数は3p一種になっていますが3p引いたときに6m切ってのリーチする想定になっていませんか?
https://pbs.twimg.com/media/FUF4ldDaIAASkEn?format=jpg&name=large
https://pbs.twimg.com/media/FUFzMSMaMAAd26K?format=jpg&name=large
コメントありがとうございます。
ご指摘いただいた手牌について調査します。しばらくお時間をいただくかもしれません。
issue に登録しました しばらくお時間いただくかもしれませんが、調査します
https://github.com/nekobean/mahjong-cpp/issues/14
↑上の質問と重複するかもしれませんが、聴牌したときの取りダマ(手変わりを待ってリーチしない)は考慮されているのでしょうか?
麻雀 – 何切る問題の期待値の計算方法について
を読むと聴牌した後の分岐はすべてリーチしているように見えるのですが
コメントありがとうございます。
「麻雀 – 何切る問題の期待値の計算方法について」
https://pystyle.info/mahjong-expected-value-in-mahjong/
上記記事では説明を簡単にするため、手変わりは考えない場合の期待値についての計算方法を紹介していますが、実際のプログラムでは聴牌時も手変わりや向聴戻しを考慮しています。
しかし、過去のコメントでもいくつかご指摘いただいてるのですが、一部の手牌で不自然な計算結果が出ることがあり、プログラムになんらかの不具合が存在する可能性があると考えています。
何切るシミュレーターについて、時間がとれず半年ほど更新できていなかったのですが、今度調査してみます。
もし、不自然な計算結果が出た場合は、同様の期待値計算ツールで検証してみるといいかもしれません。
「一人麻雀練習機」
http://ara.moo.jp/mjhmr/
「ツモアガリ確率計算機」
http://critter.sakura.ne.jp/agari_keisan.html
いつも楽しく利用させていただいております。
麻雀の解説動画を作ろうと思っているのですが、動画の一部に何切るシュミレーターの解析結果を載せても良いでしょうか?
動画で牌姿の説明をした後、最後にシミュレーションの結果を見て、「受け入れ枚数と期待値的にも解説は間違っていなさそうですね」と補足的に入れる程度です。(シミュレーションの結果をメインに動画を構成することはなく、あくまでも補助的利用いたします)
動画の説明欄には何切るシュミレーターと麻雀牌画像の引用先である麻雀豆腐様をクレジットに記載します。
シミュレーション使用の際の利用規約等が見当たらなかったのでこちらで質問させていただきました。
お手数ですがご返答いただけると幸いです。
コメントありがとうございます。
シミュレーション結果の引用は自由にしていただいて構いません。
結果は他家や副露を考慮していない平面何切るであるため、あくまで参考程度にご利用ください。
ご返答ありがとうございます。
これからも何切るシュミレーターの発展を陰ながら応援させていただきます