ガチャなどの身近に有る確率の問題を解いてみました。
解説動画はこちら
初めに簡単な問題を
問1. 30人クラスで同じ誕生日の生徒がいる確率は?
考えたい方はここでスクロールを止めて
考えてみてください。
答え:
1組みでも誕生日が一致している確率
= 1 - 全員の誕生日が異なる確率
となるので
計算式は

こんな感じになります。
計算めんどくさいのでPythonで解きます。
出ました。
30人クラスだと7割くらいの確率で
1組みくらいは同じ誕生日の人が居そうですね。
50人までの確率を調べてみましょう。

20人クラスでも40%ほど
50人クラスでは97%にもなります。
だいたい会社だと100人超えてくると思うので
1組みは同じ誕生日の人がいるんじゃないかと思います。
問2. 当たる確率1%のガチャ
100回連続で外れる確率は確率は?
ガチャの確率の問題です。
自分もよくガチャ引きますが
3倍祭りとか言ってるのに
全然当たらないですよねーーーー
答えは
100連続で外れる確率
1回引いて外れる確率の(100乗)
と言うことで
計算は簡単です。
ガチャ確率1%だと
100回引いても3割以上は1回も当たらないんです!!
では
どれくらい引いたら当たるかを
シミュレーションしてみましょう。
当たる確率は 1-外れる確率 で計算できますね。
500回引いた際の当たる確率のシミュレーションです。

100回引いた程度だと36%も外れるわけですから
もっと引かないと当たらないですよね。
500回ほど引けばほぼ当たりそうな感じはしますが
確実ではないと言うところがミソです。
本当に1%の確率で当たるのか??
確率はちゃんと1%なのか??
と言う疑問を解消するには
1万人ほどアンケートとってみるしか
ないんじゃないかと思います。
1%の確率で当たるガチャを100回引く
1万人ガチャシミュレーションの結果は・・・

0は外れた人の数、それ以外は当たった回数で何人いるかです。
0のところは先ほどの確率で行くと36%=3600人ほど
外れているのが分かります。
1万人くらいのアンケートをとって
外れてる人が何人いるのかを調べれば
本当にガチャの確率が1%だったのかを
検証できるかもしれませんね。
今回はここまでです。
それでは。
解説動画はこちら
初めに簡単な問題を
問1. 30人クラスで同じ誕生日の生徒がいる確率は?
考えたい方はここでスクロールを止めて
考えてみてください。
答え:
1組みでも誕生日が一致している確率
= 1 - 全員の誕生日が異なる確率
となるので
計算式は

こんな感じになります。
計算めんどくさいのでPythonで解きます。
from functools import reduce
from operator import mul
n = 30
a1 = [i for i in range(365,365-n,-1)]
a2 = [365 for i in range(n)]
print('{:%}'.format(1- reduce(mul, a1)/reduce(mul, a2)))
70.631624%出ました。
30人クラスだと7割くらいの確率で
1組みくらいは同じ誕生日の人が居そうですね。
50人までの確率を調べてみましょう。
from functools import reduce
from operator import mul
import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(figsize=(16,5))
x,y = [n for n in range(2,51)] , []
for n in x:
a1 = [i for i in range(365,365-n,-1)]
a2 = [365 for i in range(n)]
y.append(1-reduce(mul, a1)/reduce(mul, a2))
plt.bar(x,y)
plt.grid()
plt.show()

20人クラスでも40%ほど
50人クラスでは97%にもなります。
だいたい会社だと100人超えてくると思うので
1組みは同じ誕生日の人がいるんじゃないかと思います。
問2. 当たる確率1%のガチャ
100回連続で外れる確率は確率は?
ガチャの確率の問題です。
自分もよくガチャ引きますが
3倍祭りとか言ってるのに
全然当たらないですよねーーーー
答えは
100連続で外れる確率
1回引いて外れる確率の(100乗)
と言うことで
計算は簡単です。
print('{:%}'.format((99/100)**100))
36.603234%ガチャ確率1%だと
100回引いても3割以上は1回も当たらないんです!!
では
どれくらい引いたら当たるかを
シミュレーションしてみましょう。
当たる確率は 1-外れる確率 で計算できますね。
500回引いた際の当たる確率のシミュレーションです。
import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(figsize=(16,5))
x,y = [n for n in range(1,501)],[]
for n in x:
y.append(1-(99/100)**n)
plt.bar(x,y)
plt.grid()
plt.show()

100回引いた程度だと36%も外れるわけですから
もっと引かないと当たらないですよね。
500回ほど引けばほぼ当たりそうな感じはしますが
確実ではないと言うところがミソです。
本当に1%の確率で当たるのか??
確率はちゃんと1%なのか??
と言う疑問を解消するには
1万人ほどアンケートとってみるしか
ないんじゃないかと思います。
1%の確率で当たるガチャを100回引く
1万人ガチャシミュレーションの結果は・・・
import random
weights = [0.99,0.01]
d = {b:0 for b in range(101)}
for p in range(10000):
a = 0
for i in range(100):
tf = random.choices([False,True], weights=weights)[0]
if tf:
a=i+1
break
d[a]+=1
import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(figsize=(16,5))
x = list(d.keys())
y = list(d.values())
plt.bar(x,y)
plt.grid()
plt.show()

0は外れた人の数、それ以外は当たった回数で何人いるかです。
0のところは先ほどの確率で行くと36%=3600人ほど
外れているのが分かります。
1万人くらいのアンケートをとって
外れてる人が何人いるのかを調べれば
本当にガチャの確率が1%だったのかを
検証できるかもしれませんね。
今回はここまでです。
それでは。

コメントする