残り牌の予測
牌効率における計算のベースは「個々の牌を引いてくる確率」にあります。 これについて考えてみましょう。
以下、計算が入ってくるため、いくつかの記号を導入します。
- Z を残りのツモ可能な山牌の枚数とします。
- X を見えていない牌の総枚数とします。
このとき、Z および X は以下の式で計算できます。
Z = (配牌完了直後の残りツモ回数)[69枚]
- (ツモ[嶺上牌ツモ含]が行われた回数)
X = (麻雀牌の総枚数)[136枚]
- (ドラ表示牌枚数)
- (河に捨てられている牌の枚数)
- (副露されている牌の枚数)
- (自分の手牌の枚数)
配牌完了直後であれば Z = 69, X = 121 or 122となります。 自分が親であれば X = 121であり、子ならば X = 122です。
イカサマなどの確率操作が行われていない場合、配牌直後であれば見えていない特定の牌は、見えていないすべての牌の中に等確で存在するはずです。
例えば手牌の中に東が3枚あると仮定すると、残り1枚の東がツモ予定の山牌の中にある確率は Z / X となります。 配牌直後の子であれば 69/122 = 0.56557… ですので、半分以上の確率でツモ予定の牌の中にあることになります。
1枚も見えていない場合、つまり4枚残っている場合には 4 x 69 / 122 = 2.262… 枚くらいあることが期待できます。 1枚も見えていない牌のうち、少なくとも1枚はツモ予定の牌の中にある確率は、1-(4枚すべてが誰かの手牌か王牌にある確率) で求められ ます。Y = X - Zとすると以下のようになります。
Y x (Y - 1) x (Y - 2) x (Y - 3) | ||||
1 | - | ────────────── | = 0.9666… | |
X x (X - 1) x (X - 2) x (X - 3) |
約97%といったところでしょうか
それでは局が進んで終盤になったときにも上のような計算で確率を求めることができるでしょうか?
答えは「否」です。上記の計算式は全員が無作為に打牌しているならば成り立ちますが、各プレイヤーはアガリを目指したり放銃しないよ うに作為的な打牌を行っていますので、上記の計算式は成り立ちません。 ではどのように考えれば良いでしょうか?
数学に「統計による推定」という手法があります。これは計算で確率法則を求めることが困難な場合に、実測値を観測することでそれを生成する確立法則について推測を行う、というものです。 この方法によるアプローチはすでにとつげき東北氏のホームページ「1:他家必要メンツのモデル化理論と実装(MJ-0ルーチン)」で行われています。具体的な内容はそちらを参照いただくとして、ここでは考え方を簡単に説明します。
各プレイヤーは順当にアガリを目指すとすれば普通は四面子一雀頭に近い形となっていきます。したがって、終盤の相手の手牌には面子や雀頭がある程度存在すると仮定して問題ありません。
そこで、自分からは見えていない牌の集合から面子および雀頭をランダムに生成し、それを取り除いた集合を考えます。面子および雀頭をいくつ作って取り除くかは局の進行具合で調整するのが良いでしょう。
上記の処理をある程度の回数行い、残った牌の数え上げを行うと、手牌に使われていなさそうな牌ほど何度もカウントされることになります。したがって、そういった牌は山牌に残っている確率が高くなると推定できます。
各他家からいくつ面子を取るか、河の状況からありえないような面子組み合わせは取らない、といった条件決めを行うことで求められた値の精度を上げることは可能です。 しかし、特に河の状態から他家の面子構成に制限を入れない形でも人間が考えて読むよりも良い結果が得られるようです(とつげき東北氏「コンピュータと勝負しよう」)。
ここで重要なことは、上記方式による推定がどの程度正しいかということではなく、実際に戦術アルゴリズムに利用することで具体的にどの程度強くなるか、ということでしょう。