今回は直感に反する確率の逆説の問題集です
解説動画はこちら
解説動画はこちら
直感に反する確率の問題
なんとなくコレかなと思ったけど
答えはそれと違っていたというような
直感に反する答えが出そうな問題です。
問題とともに
回答に使用したコードを載せておきます。
なんとなくコレかなと思ったけど
答えはそれと違っていたというような
直感に反する答えが出そうな問題です。
問題とともに
回答に使用したコードを載せておきます。
1.確率の逆説
第1問
サイコロを2回振るとき 少なくとも1回は1が出る確率は
1. 3分の1より小さい
2. ちょうど3分の1(33.3%)
3. 3分の1より大きい
第3問
コインを4回投げてすべて表が出た場合、次の投げで裏が出る確率は
答えは
シミュレーションプログラムを実行するか
動画をご覧ください。
そんなに確率高くないだろうと思っていたら
意外と高い確率だったり
意外と低かったり
そんなこともあるんじゃないかと思います。
プログラムを使えば
色々シミュレーションして
おおよその確率を求めることができるので
さまざまな事象の確率を求めたいなら
プログラミングを習得するのが
おすすめです。
今回はここまでです
それでは。
# サイコロを2回振るとき 少なくとも1回は1が出る確率 import random num = 1000000 count = 0 for _ in range(num): dices = [random.choice([1,2,3,4,5,6]),random.choice([1,2,3,4,5,6])] if 1 in dices: count+=1 print(f"少なくとも1が1回はでた回数 : {count}") print(f"{count * 100 / num}%")
第2問
学校のクラス30人の生徒の中に誕生日が同じ人がいる確率は
1. 約30%
2. 約50%
3. 約70%
4. 約90%
# n人の生徒の中に誕生日が同じ人がいる確率 import random from collections import Counter birthdays = list(range(365)) num = 30 cnt, all_cnt = 0,0 for i in range(1000000): all_cnt+=1 tmp = random.choices(birthdays,k=num) c = Counter(tmp) mx = c.most_common(1) if mx[0][1]>1: cnt+=1 print(f"誕生日が同じ人がいた回数 : {cnt}") print(f"誕生日が同じ人がいる確率 : {cnt * 100 /all_cnt}%")
2.ギャンブラーの誤謬
過去の結果が現在の結果に影響すると誤って考える心理
第3問
コインを4回投げてすべて表が出た場合、次の投げで裏が出る確率は
1. 50%より小さい
2. ちょうど50%
3. 50%より大きい
# コインを投げて4回表が出た後の出目の確率 import random def simulate_coin_tosses(trials): result = {'表':0,'裏':0} coins = [random.choice(['表', '裏']) for _ in range(trials)] for i in range(0, trials-5): if coins[i:i+4] == ['表', '表', '表', '表']: next = coins[i+4] result[next]+=1 return result['表'], result['裏'] # 試行回数 k = 1000000 total_heads, total_tails = simulate_coin_tosses(k) print(f"試行回数: {k}") print(f"表の合計回数: {total_heads}") print(f"裏の合計回数: {total_tails}") print(f"4回表が出た後の裏が出る確率は : {total_tails * 100 / (total_heads + total_tails):.6}%")
第4問
コインを1000回投げた時に、連続して表が出る最高回数は
1. 8回より少ない
2. 8-10回くらい
3. 10回より多い
# コインをnum回投げて、連続して表が出る最高回数 import random def max_consecutive_heads(trials): coins = [random.choice(['表', '裏']) for _ in range(trials)] #print(coins) #print(f"表の数 : {coins.count('表')}") max_count, current_count = 0, 0 for coin in coins: if coin == '表': current_count += 1 max_count = max(max_count, current_count) else: current_count = 0 return max_count # 試行回数 num = 1000 max_heads = [max_consecutive_heads(num) for _ in range(1000)] mean_heads = sum(max_heads) / len(max_heads) print(f"試行回数: {num}") print(f"連続して出現した表の最高回数: {mean_heads}")
答えは
シミュレーションプログラムを実行するか
動画をご覧ください。
そんなに確率高くないだろうと思っていたら
意外と高い確率だったり
意外と低かったり
そんなこともあるんじゃないかと思います。
プログラムを使えば
色々シミュレーションして
おおよその確率を求めることができるので
さまざまな事象の確率を求めたいなら
プログラミングを習得するのが
おすすめです。
今回はここまでです
それでは。
コメントする