毎回,サイコロを1個だけ投げて出た目を記録して棒グラフを描くと,1 ~ 6 の目はほぼ均等に出る(矩形分布になる)ことがわかる。
毎回,サイコロを2個投げて出た目の平均値を求め記録して棒グラフを描くと,分布は三角分布になることがわかる。
毎回,サイコロを3, 4, 5, ..., n個投げて出た目の平均値を求め記録して棒グラフを描くと,分布はだんだん正規分布に近くなることがわかる。
出目の平均値は 3.5 程度で,分散が小さくなる。
以下の図の縦軸は確率密度である。
シミュレーションプログラムは以下の通り。
using Plots, PlotThemes Random, Statistics, FreqTables
function centrallimittheorem(nmax=20; fps=1)
Random.seed!(12345)
theme(:gruvbox_light)
pyplot(grid=false, label="", size=(400, 300))
n = 100000
anim = @animate for i = 1:nmax
data = vec(mean(reshape(rand(1:6, n*i), n, :), dims=2));
height = freqtable(data);
x = vec(names(height)...);
width = minimum(diff(x));
height = vec(height) / (n*width)
bar(x, height, bar_width=width, linewidth=0,
xlims=(0.5, 6.5), ylims=(0, 1.2),
tick_direction=:out, tickfontsize=10,
xlabel="出目の平均値", ylabel="密度",
title="出目の平均値の分布")
annotate!(3.5, 1.1,
text("$i 個のサイコロを投げるという試行を $n 回繰り返す", 8, :black))
end
gif(anim, "centralliittheorem.gif", fps=fps)
end
centrallimittheorem(20)
※コメント投稿者のブログIDはブログ作成者のみに通知されます