LoginSignup
Halchamdao
@Halchamdao

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

爆破スイッチ(黒髭危機一髪のようなゲーム)の順番別勝率

解決したいこと

以下の爆破スイッチというアプリ(黒髭危機一髪のようなゲーム)を記載のルールで実施した際の順番別勝率を出したいです。

ゲームの仕様

・16個のボタンがあり1つ爆発するボタンがある
・爆発するかは押さないとわからなくて、爆発したらゲーム終了
・一度押したボタンは押せない

ルール

・4人で実施する(A・B・C・D)
・A→B→C→Dの順番にボタンを押す
・爆発するボタンを押した人が「負け」
・自分の順番で「3つ」ボタンを押さなければいけない
・3つ押して爆発するボタンを押さなければ次の人が3つ押すを繰り返す(結果的に最長でA→B→C→D→A→Bまで続く)

試したこと

チャットCPT4に手伝ってもらって、「他の人が爆発させる確率 = その人の勝率」がヒントになったぐらいで、毎回違う回答が返ってきたり、4人の勝率を足しても100%にならなかったり(それは正しい??)、複雑すぎて専門家でないとわからないと言われたりと明確な結論が出ない状態です。
どなたか有識者の方ご教授いただきたいです。

0

4Answer

それほど数学に自信はありませんが、
下表の通り、どこでも爆発する確率は$\frac{1}{16}$と等しく、合計は$1$になると思います。
人別では、どの人も$\frac{1}{4}=\frac{1}{16}×4$と等しい。
間違っていたらごめんなさい。

残り ここで当たる確率 ここで外す確率
16 A $\frac{1}{16}$ $\frac{15}{16}$
15 B $\frac{1}{16}=\frac{15}{16}×\frac{1}{15}$ $\frac{7}{8}=\frac{15}{16}×\frac{14}{15}$
14 C $\frac{1}{16}=\frac{7}{8}×\frac{1}{14}$ $\frac{13}{16}=\frac{7}{8}×\frac{13}{14}$
13 D $\frac{1}{16}=\frac{13}{16}×\frac{1}{13}$ $\frac{3}{4}=\frac{13}{16}×\frac{12}{13}$
12 A $\frac{1}{16}=\frac{3}{4}×\frac{1}{12}$ $\frac{11}{16}=\frac{3}{4}×\frac{11}{12}$
11 B $\frac{1}{16}=\frac{11}{16}×\frac{1}{11}$ $\frac{5}{8}=\frac{11}{16}×\frac{10}{11}$
10 C $\frac{1}{16}=\frac{5}{8}×\frac{1}{10}$ $\frac{9}{16}=\frac{5}{8}×\frac{9}{10}$
9 D $\frac{1}{16}=\frac{9}{16}×\frac{1}{9}$ $\frac{1}{2}=\frac{9}{16}×\frac{8}{9}$
8 A $\frac{1}{16}=\frac{1}{2}×\frac{1}{8}$ $\frac{7}{16}=\frac{1}{2}×\frac{7}{8}$
7 B $\frac{1}{16}=\frac{7}{16}×\frac{1}{7}$ $\frac{3}{8}=\frac{7}{16}×\frac{6}{7}$
6 C $\frac{1}{16}=\frac{3}{8}×\frac{1}{6}$ $\frac{5}{16}=\frac{3}{8}×\frac{5}{6}$
5 D $\frac{1}{16}=\frac{5}{15}×\frac{1}{5}$ $\frac{1}{4}=\frac{5}{16}×\frac{4}{5}$
4 A $\frac{1}{16}=\frac{1}{4}×\frac{1}{4}$ $\frac{3}{16}=\frac{1}{4}×\frac{3}{4}$
3 B $\frac{1}{16}=\frac{3}{16}×\frac{1}{3}$ $\frac{1}{8}=\frac{3}{16}×\frac{2}{3}$
2 C $\frac{1}{16}=\frac{1}{8}×\frac{1}{2}$ $\frac{1}{16}=\frac{1}{8}×\frac{1}{2}$
1 D $\frac{1}{16}=\frac{1}{16}×1$ -

あっ!

自分の順番で「3つ」ボタンを押さなければいけない

これ、忘れてました。

2

Comments

  1. 自分の順番で「3つ」ボタンを押さなければいけない

    この場合も、どこでも爆発する確率は$\frac{1}{16}$と変わりませんが、
    先ほどとは廻ってくる回数が違うので、下表の確率になると思います。

    スイッチを押す回数 爆発する確率
    A 6回 $\frac{6}{16}$
    B 4回 $\frac{4}{16}$
    C 3回 $\frac{3}{16}$
    D 3回 $\frac{3}{16}$

    爆発する人はただ一人なので、爆発しない確率の和は$1$では無い気がします。
    間違っていたらごめんなさい。

適当なシミュレーションを作ってみてはいかがでしょうか
以下サンプルです

sample.py
import random

def simulate_game():
    # 4人のプレイヤーと16個のボタンを用意する
    players = ['A', 'B', 'C', 'D']
    buttons = list(range(16))
    # 爆弾のボタンをランダムに決める
    bomb_button = random.choice(buttons)

    # ゲームが終わるまで続ける
    while True:
        # プレイヤーの順番にボタンを選ぶ
        for player in players:
            # ボタンが3個以下になったら、残りのボタンを全て選ぶ
            if len(buttons) < 3:
                choices = buttons
            # そうでなければ、ボタンを3個ランダムに選ぶ
            else:
                choices = random.sample(buttons, 3)
            # 選んだボタンについてチェックする
            for choice in choices:
                # 爆弾のボタンを選んだら、そのプレイヤーが負ける
                if choice == bomb_button:
                    return player
                # そうでなければ、そのボタンを削除する
                buttons.remove(choice)

def calculate_win_rates(simulations=1000000):
    
    win_counts = {'A': 0, 'B': 0, 'C': 0, 'D': 0}
    # 指定された回数だけゲームをシミュレーションする
    for _ in range(simulations):
        # ゲームの結果を取得する
        loser = simulate_game()
        # 負けたプレイヤー以外の勝利回数を増やす
        for player in win_counts:
            if player != loser:
                win_counts[player] += 1

    win_rate = {player: (count / simulations) * 100 for player, count in win_counts.items()}    
    return win_rate

# 勝率を計算する
win_rates = calculate_win_rates()
# 勝率を表示する
for player, rate in win_rates.items():
    print(f'{player}: {rate:.3f}%')

2

一度でた目はでない
⚀⚁⚂⚃⚄⚅にて三回振って⚀がでる確率は

3/6=0.5です。

これは三回振って⚀がでない確率を求め、1からその値を引くと

1 - (5/6 x 4/5 x 3/4)=0.5

次に二人目は⚀⚁⚂にて三回振って、⚀がでない確率を求め、1からその値を引くと

1 - (2/3 x 1/2 x 0/1)=1x0.5=0.5


1巡のAはこの考えで

1 - (15/16 x 14/15 x 13/14)=0.1875

でしょうか?

1巡のBは0.8125を引き継いで

1 - (12/13 x 11/12 x 10/11)=0.230x0.8125=0.1875

でしょうか? 3/16=0.1875

Àは2巡で 6/16
Bは    4/16
Cは    3/16
Dは    3/16
     16/16

1

まず、何が「勝ち」「負け」なのかを明確にする必要があります。
書かれているルールを素直に受け取れば「爆発させた人が負け、それ以外の人は勝ち」と思われるので、ゲームを一回するたびに「必ず一人の敗者と三人の勝者が決まる」となるわけで、ゲームごとの勝率の合計は1ではなく3にならないとおかしいです。
(ぶっちゃけ「勝ち」「負け」がどのように決まるのかを一切説明していないのに「勝率を計算してくれ」なんて無理な話です)


そして「順番別勝率」とは何なのかが不明確です。
これは「どう計算すれば正しいのか」ではなく「どう計算すると定義するのか」という問題です。

とりあえず確率のことは置いておいて、一つの順番を消化した(たとえばAが3つボタンを押した)の結果が何種類あるかを考えてください。

  • 爆発した
  • 爆発しなかった

の2通りですね。
このとき爆発した場合はAの負けと考えてよさそうですが、爆発しなかったときはAの勝ちなのでしょうか?それとも誰かが爆発させるまでは勝敗が不明と考えるのでしょうか?
そして確率を計算するには分母と分子が必要ですが、分子の方は「勝った回数」でいいとして、分母は何になるのでしょう?
これだとわかりにくいので具体例を挙げると、「10回ゲームをしてそのうち2回は最初にAがボタンを押して爆発、3回は二番目のBの時に爆発した」の場合、
最初のAの負け率(勝率だと無駄に面倒なのでとりあえず負け率の計算とする)は「10回中2回爆発」(2/10)となりますが、
二番目のBの負け率は「10ゲーム中3回負けた」(3/10)なのか「順番が回ってきたのが8回で、そのうち3回負けた(3/8)なのか
と2通りの計算方法が考えられます。(他の計算方法もあるかもしれません)

これが「どう計算すればいいのか」ではなく「どう計算することにするのか」なわけです。

1

Your answer might help someone💌