2015.10.06
Jackal

また確率の話

確率とpythonが大好きなので、また確率の話を書きます。

ジョーカーを除いたトランプ52枚の中から1枚のカードを抜き出します。
そのカードがダイヤである確率はいくらでしょうか?

と聞かれたら、1/4と答えますよね。では

ジョーカーを除いたトランプ52枚の中から1枚のカードを抜き出し
表を見ないで箱の中にしまいます。そして、残りのカードをよく切ってから
さらに3枚引いたところ3枚ともダイヤでした。
このとき、箱の中にしまったカードがダイヤである確率はいくらでしょうか。

と聞かれたら何と答えますか?

直観的に考えると最初に52枚の中から1枚引いたのだから1/4の気がするのですが
正解はは10/49とのこと。

疑わしいので上の手順に純粋に従ったプログラムをpythonで
書いて確認してみました。


import random

# ダイアモンドだった時とダイアモンドじゃなかったときの
# 回数をカウントする変数を用意。
num_diamonds = 0  # ダイヤだった回数
total = 0  # 3枚がダイヤだった回数

# カードを用意
cards = ['♦'] * 13 + ['♥'] * 13 + ['☘'] * 13 + ['♠'] * 13

# よく混ぜます。
random.shuffle(cards)

# ここから一枚引いて箱に入れます。
box = cards.pop(random.randint(0, len(cards) - 1))

# 残りのカードをよく切ります。
random.shuffle(cards)

# さらに3枚引きます。
card1 = cards.pop(random.randint(0, len(cards) - 1))
card2 = cards.pop(random.randint(0, len(cards) - 1))
card3 = cards.pop(random.randint(0, len(cards) - 1))

# 3枚のカードがすべてダイヤのときでboxの中のカードがダイヤだったら
# num_diamondsをカウントします。
if card1 == card2 == card3 == '♦':
    if box == '♦':
        num_diamonds += 1
    total += 1

これを10万回10セット回して計算してみます。


import random

# ダイアモンドだった時とダイヤじゃなかったときの
# 回数をカウントする変数を用意します。
num_diamonds = 0  # ダイヤだった回数
total = 0  # 3枚がダイヤだった回数

for i in xrange(10):
    for j in xrange(100000):
        # カードを用意
        cards = ['♦'] * 13 + ['♥'] * 13 + ['☘'] * 13 + ['♠'] * 13

        # よく混ぜます。
        random.shuffle(cards)

        # ここから一枚引いて箱に入れます。
        box = cards.pop(random.randint(0, len(cards) - 1))

        # 残りのカードをよく切ります。
        random.shuffle(cards)

        # さらに3枚引きます。
        card1 = cards.pop(random.randint(0, len(cards) - 1))
        card2 = cards.pop(random.randint(0, len(cards) - 1))
        card3 = cards.pop(random.randint(0, len(cards) - 1))

        # 3枚のカードがすべてダイヤのときでboxの中のカードがダイヤだったら
        # num_diamondsをダイヤじゃなかったらnum_not_daiamondsを一つカウントします。
        if card1 == card2 == card3 == '♦':
            if box == '♦':
                num_diamonds += 1
            total += 1

    # 結果を表示します。
    print ' %s/%s (%2.4f%%)' % (num_diamonds,
                                total,
                                float(num_diamonds) / total * 100)

結果は以下の通りです。


 248/1269 (19.5429%)
 499/2505 (19.9202%)
 755/3717 (20.3121%)
 1021/4991 (20.4568%)
 1283/6281 (20.4267%)
 1536/7553 (20.3363%)
 1816/8788 (20.6645%)
 2093/10070 (20.7845%)
 2359/11320 (20.8392%)
 2612/12583 (20.7582%)

10/49が20.4081%くらいなので大体あってそうです。なんか不思議じゃないですか?
後から引いたカードによって確率が変わるって。

私はしばらく考えた後、こういう極端な問題を考えてなんとなく納得がいきました。

ジョーカーを除いたトランプ52枚の中から1枚のカードを抜き出し
表を見ないで箱の中にしまいます。そして、残りのカードをよく切ってから
さらに13枚引いたところ13枚ともダイヤでした。
このとき、箱の中にしまったカードがダイヤである確率はいくらでしょうか。

YI

一覧に戻る