0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

確率の偏りは存在するのか?(ポーカー、コイントス、ジャンケン)

Posted at

はじめに

私はポーカーが好きで「ポーカーチェイス」というゲームをよくやるのだが、良いハンド(手札)が続くときや、逆に悪いハンドが続くときがよくある。
シャッフルしたトランプカードが配られているので、恣意性は全くないはず。
では、私の感じたことは勘違いなのだろうか…検証してみよう。

シンプルにしてみる

シャッフルしたカードが配られるということは、つまり、ランダムであるということ。
スート(スペード等の柄のこと)を排除すると、ランダムに発生する数字に偏りが出るかが論点となる。
この類のゲームで最もシンプルなのはコイントスだ。
表を「0」、裏を「1」と捉えれば似ていることが分かるだろう。

検証用のプログラム

実際にコイントスを何千回もやるわけにはいかないので、検証用のプログラム(Python)を作成した。
自分で試してみたいという人のために掲載しておくが、内容が分からなくても問題はないので、興味がない人は読み飛ばしてほしい。

import random
from collections import Counter

# 変数を定義
choices = ["", ""]
trial_count = 100
random_nums = []
msg = ""
digit = len(str(trial_count))
result = None

# n個のランダムな数値を取得(シミュレーションを実施)
random_nums = [random.randint(0, len(choices) - 1) for _ in range(trial_count)]

# シミュレーション過程を表示
for i, num in enumerate(random_nums):
    count = i + 1
    msg += f"{count:>{digit}}: {choices[num]}"

    if count % 10 == 0:
        print(msg)
        msg = ""
        continue

    msg += ", "

# シミュレーション結果を集計
result = Counter(random_nums)
print("-" * 50)

# シミュレーション結果を表示
for i in range(len(choices)):
    count = result[i]
    per = count / trial_count * 100

    # パーセンテージは小数点第3位で四捨五入
    print(f"{choices[i]}: {count:>{digit}}回, {per:.2f}%")

検証結果(コイントス)

いくつかのバリエーション(n回コイントスを試行×10セット)を用意してみた。
ちなみに、コイントスで表が出る理論上の割合は50%である。

コイントスの検証結果.jpg

試行回数が少なすぎると極端に偏りが出る。6回連続で表が出るとか…(試行回数6回・2セット目)
試行回数10回ではかなり偏りがあり(min 20% ~ max 80%)、試行回数50回でもまだ偏っている(min 34% ~ max 56%)。
試行回数100回でややバランスが取れてきており(min 44% ~ max 57%)、試行回数1,000回で安定してきている印象を受ける。
試行回数10,000回以上になると割合にほとんど差がない(min 49.59% ~ max 51.2%)

選択肢を増やしてみる

コイントスの場合は2択であったが、ジャンケンの場合はどうなるだろうか。
コイントスのときと同じく、グーを「0」、チョキを「1」、パーを「2」として同類のゲームと捉えて検証してみる。
検証用のプログラムは同じものを使用し、選択肢のみ変更する。

choices = ["グー", "チョキ", "パー"]

検証結果(ジャンケン)

こちらも同じバリエーションを用意した。
なお、シンプルにするため、人の意志は入っていないジャンケンと仮定して検証を行う。
ジャンケンで相手がグーを出す理論上の割合は約33.33%である。

ジャンケンの検証結果.jpg

やや分かりづらいので、次で深堀りする。

検証結果を比較してみる

両者を比較するため、まずは割合から標準偏差を計算する。
標準偏差とは、データが平均値からどれくらい離れているかを表す数値である(0に近づくほど偏りが少ない)。
なお、標準偏差の計算については、プログラムを作成するよりもChatGPTを使った方が早い。

コイントスの標準偏差

理論上の平均値50%からどれくらい離れているか。

  • 試行回数6回の場合:約22.36
  • 試行回数10回の場合:約16.12
  • 試行回数50回の場合:約7.46
  • 試行回数100回の場合:約5.01
  • 試行回数1,000回の場合:約2.35
  • 試行回数10,000回の場合:約0.55
  • 試行回数100,000回の場合:約0.27

ジャンケンの標準偏差

理論上の平均値33.33%(1/3)からどれくらい離れているか。

  • 試行回数6回の場合:約19.00
  • 試行回数10回の場合:約15.63
  • 試行回数50回の場合:約7.71
  • 試行回数100回の場合:約4.84
  • 試行回数1,000回の場合:約1.68
  • 試行回数10,000回の場合:約0.45
  • 試行回数100,000回の場合:約0.15

どちらの結果もそこまで大きく変わらない印象を受ける。
試行回数1,000回以上で安定しているので、偏りがなくなるまでにはかなりの回数が必要だということが分かる。
ラッキーが重なることもあれば、逆も然りであり、長い目で見れば理論上の平均値に収束する。

結論

選択肢が増えたとしても、標準偏差(確率の偏り)の遷移にそこまで大きな差はなかった。
いずれの場合も、試行回数が少ない(〜50回)と結果にかなりの偏りがあり、結果が安定するまでに1,000回程度の試行が必要あることが分かった。
さらに、理論上の平均値(割合)に収束するためには10,000回もの試行が必要であることも分かった。
ポーカーの場合は選択肢(カード枚数)が多いとはいえ、根本的な部分は共通しているので、良いハンド(悪いハンド)が続くことは充分にあり得る。
ただし、前述のとおり長期的には理論上の平均値に収束するので、良いハンドが続いたときは大きくベットし、悪いハンドが続いたときは焦る気持ちを抑えてフォールドすることが重要になってくると考える(ブラフベットについては今回の論点から逸れるので言及しない)。

最後まで読んでくださって、ありがとうございます。
面白いと思った方は、下にある「いいね」ボタンのタップをお願いします。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?