麻雀 – 期待値計算ツール 何切るシミュレーター

目次

概要

麻雀の何切る問題において、打牌の受け入れ枚数、聴牌確率、和了確率、期待値を計算するアプリ「麻雀何切るシミュレーター」について紹介します。

麻雀何切るシミュレーター

麻雀何切るシミュレーター は、手牌を入力すると、以下の情報を計算するアプリです。

  • 手牌が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巡目, 手牌の種類: 一般手, ドラ: [南]

手牌

引用元: 神様の麻雀『何切る?』第五十一問 | オンライン麻雀 Maru-Jan 公式サイト


計算結果

打: 七筒, 受け入れ枚数: 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巡目, 手牌の種類: 一般手, ドラ: [七萬]

手牌

引用元: Mリーガー 多井隆晴が出題!多井何切る【第1問】 | キンマweb – 近代麻雀 web


計算結果

打: 八筒, 受け入れ枚数: 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巡目, 手牌の種類: 一般手, ドラ: [六筒]

手牌

引用元: No.19877の集計結果 – 麻雀で何切る!?


計算結果

打: 七筒, 受け入れ枚数: 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 切りで三色を狙いましょう。

まとめ

概ね、人間が考える打牌と同じ結果がコンピューターの計算でも得られることが確認できました。

コメント

コメント一覧 (105件)

  • 東場南家 34678m678p22s白 明順子345pドラ表示1s (赤5全切れ)
    において、白切りの期待値が3223点、和了確率が55.69%となっていました。手替わりが全くない(たとえば2sを引いたときでも2s切りなので)ため、期待値は4000×0.5569=2228点になると思います。もしよろしければ検証をよろしくお願いします。

    • 返信が遅くなりすみません。
      時間がとれずしばらく更新できていないのですが、今度検証してみようと思います。
      コメントありがとうございます。

      • 毎日のように何切るシミュレータを使っていて、いつも助かっています。計算過程について質問があります。

        このツイートとそれに連なるリプライを見ていただければわかるのですが、13枚形のシミュレーションに違和感があります。https://x.com/madopyi/status/1713053065761493048?s=20

        通常の選択での14枚と13枚を比較すると巡目が1巡違うことに従った結果が出ます。

        ただ、聴牌率 和了率 期待値において14枚<シャンテン戻し13枚
        となる逆転現象が起こっていて、この原因は計算過程における手替わりの考慮にあると思っていて、実際14枚形と13枚形どちらを採用すればよいのでしょうか?

        • 返信が遅くなりすみません。
          いつもご利用いただきありがとうございます。
          週末確認してみます。

          • 上はミスです
            要望にはなりますが、三人麻雀用に2〜8mを自動で0枚に設定するボタン、もしくはシミュレーション状況を保存できるようになるととても助かります
            ご検討よろしくお願いします。

  • 突然のご連絡失礼いたします。

    私、BSジャパネクスト「麻雀オールスターJapanextCUP」を
    担当しております厨子王株式会社の藤木と申します。

    今回、麻雀何切るシミュレーター version 0.9.0を当番組の対局時にドラ表示やテンパイ時の待ち牌表示を効率化する為に使わせて頂きたくご連絡いたしました。
    シミュレーターは
    2024年5月19日放送回からの使用を予定しております。

    突然のご相談恐縮ですがご検討いただけたらと思います。
    よろしくお願いいたします。

    • 藤木様

      ご連絡いただきありがとうございます。
      本ツールですが、自由にご利用いただいて大丈夫です。

      待ち牌表示に関しては、「今の手牌から向聴数を1つ下げる牌の候補」と定義が明確であるため正確です。
      一方、期待値や和了確率等は、ツモ切りのみの一人麻雀を仮定して算出しているため、実際の麻雀での正着とは異なる場合がございますので、参考にされる場合は、ご留意ください。
      何切るシミュレーターのページの Q&A の欄にも注意点等を記載しております。

      なにかご不明な点がございましたら、お知らせください。

      以上、よろしくお願いいたします。

  • コメント失礼します。
    私はIT系の専門学校に通う学生なのですが、現在学校の授業の課題で個人制作をしております。私が作るものは「麻雀リアルタイムシミュレーター」といい、麻雀ゲーム「雀魂」のウィンドウをリアルタイムでキャプチャし、ゲーム画面から物体検知で手牌情報を含めた必要な対戦情報を取得し、GitHubに公開されてる何切るシミュレーターのソースコードに取得情報を渡し結果を表示するデスクトップアプリです。
    開発言語はPythonをメインにして、ElectronとFlaskを使っています。

    現在キャプチャリングと対戦情報の取得まで完成しているのですが、pythonから何切るシミュレーターのソースコードにデータを渡す部分の制作に躓いています。もしよろしければ、何か助言をいただけると幸いです。

    それと、私はC言語系は全く触ったことがなくこの個人制作を機に最近少し勉強しはじめてる程度の知識しかないです。

    • コメントありがとうございます。

      C++で書かれたコードをPythonから呼び出すインターフェイスを作るには、以下のようなライブラリを使用してラッパーを作る必要があります。
      – pybind11
      – Boost.Python
      なお、現在の mahjong-cpp に Python から import して使えるインターフェイスがまだ用意できておりません。
      (他の言語から呼び出せるように対応したいとは考えておりますが、最近更新できておらずすぐに対応できないかもです)

      HTTPリクエストでJSONでやり取りするインターフェイスは既にありますので、その方法でもよろしければ、Python からお使いいただけます。

      以下にサンプルコードとビルド済みのバイナリ(exe)を追加しましたので、よろしければご参照ください。
      https://github.com/nekobean/mahjong-cpp/tree/master/python_sample

      もしご不明が点やご要望がありましたら、お知らせください。

      • お忙しい中サンプルコードまで追加していただきありがとうございます。参考にさせていただきます。

      • こんにちは
        松原翔です。

        この前の学校の課題の件ありがとうございました。おかげでアプリとしての最低限のサイクルが完成しました。本当に感謝しかないです。

1 10 13

コメントする

目次