今日の授業の出席者50人の中で誕生日が同じ人がいる確率と誕生日が同じ人はいない確率とではどちらが大きいと思いますか?
プログラムを考えて試してみました(FreeMat_MATLAB)。
% 授業の出席者50人の誕生日がすべて異なる確率は?
n=50; p=1;
for i=1:n-1
p=p*((365-i)/365);
end
KotonaruKakuritu=p
OnajiTanjyobi=1-p % 同じ誕生日の人がいる確率
この確率は0.970となりました。びっくり!!!
10万回のシミュレーションをやってみました。その結果は確率0.97でした。
確率は理論値を計算するよりシミュレーションの方がずっと楽?
% 同じ誕生日の人がいるかのシミュレーション
Nin=50; Kaisu=100000; Onaji=0;
for k=1:Kaisu
T=ceil(rand(1,Nin)*365);
T=sort(T);
for i=1:Nin-1
if T(i)==T(i+1)
Onaji=Onaji+1; break;
end
end
end
OnajiTanjobi=Onaji/Kaisu
% 100人中3人の同じ誕生日の人がいるかのシミュレーション
% この理論確率は相当複雑で6人中の場合でも難関大学入試問題レベルです。
Nin=100; Kaisu=100000; Onaji=0;
for k=1:Kaisu
T=ceil(rand(1,Nin)*365);
T=sort(T);
for i=1:Nin-2
if T(i)==T(i+1) & T(i+1)==T(i+2)
Onaji=Onaji+1; break;
end
end
end
OnajiTanjobi=Onaji/Kaisu
モンティ・ホール問題のシミュレーション
問題)
プレーヤーの前に閉まった3つのドア①②③があって、1つのドアの後ろには景品の新車が、2つのドアの後ろには、はずれを意味するヤギがいる。プレーヤーは新車のドアを当てると新車がもらえる。プレーヤーが1つのドアを選択した後、司会のモンティが残りのドアのうちヤギがいるドアを開けてヤギを見せる。ここでプレーヤーは、最初に選んだドアを、残っている開けられていないドアに変更してもよいと言われる。プレーヤーはドアを変更すべきだろうか?(Wikipediaに解説があります)
% 左ドア①に新車、中ドア②と右ドア③はヤギとする
% 最初に選んだドアを変える方式の場合
Atari=0; Kaisu=10000;
for i=1:Kaisu
D=ceil(rand()*3);
if D>=2 Atari=Atari+1; end
end
AtariKakuritsu=Atari/Kaisu
答えは、AtariKakuritsu = 0.6663 でした。
このシミュレーションってやるまでもなさそう!!!
% 新車のドアーをランダムにした場合、かつ最初に選んだドアを変える方式の場合
Atari=0; Kaisu=10000;
for i=1:Kaisu
S=ceil(rand()*3);
D=ceil(rand()*3);
if D ~=S Atari=Atari+1; end
end
AtariKakuritsu3=Atari/Kaisu
答えは同じです。