Juliaで一様分布を扱う。 DistributionsパッケージのUniformは指定した範囲の一様分布を生成する。 この分布から生成されるランダムな値は指定した範囲内で等確率で現れる。 StatsPlotsライブラリのplot関数にそのまま渡せば確率密度関数(PDF)のグラフが生成される。
using Distributions, StatsPlots
plot(Uniform(1, 3), xlims=(0,4), ylims=(0,1), label="PDF")
savefig(joinpath(@OUTPUT, "uniform.svg"))
一様分布の確率密度関数(PDF)は
で計算される。xが1から3内であれば0.5でその範囲外であれば0となる。
uniform=Uniform(1, 3)
@show pdf(uniform, 1.3)
@show pdf(uniform, 0)
pdf(uniform, 1.3) = 0.5
pdf(uniform, 0) = 0.0
pdfは密度であり、xがある範囲内に入る確率を知りたい場合は累積分布関数(CDF)を用いる。
uniform=Uniform(1, 3)
@show cdf(uniform, 1.5)
@show cdf(uniform, 1.2)
@show cdf(uniform, 1.5) - cdf(uniform, 1.2)
cdf(uniform, 1.5) = 0.25
cdf(uniform, 1.2) = 0.09999999999999998
cdf(uniform, 1.5) - cdf(uniform, 1.2) = 0.15000000000000002
Uniform(1, 3)から生成されたxが1.2から1.5の間に含まれる可能性は15%である。
実際にUniform(1, 3)から乱数を生成したい場合は標準ライブラリに含まれるrand関数にUniform(1, 3)を渡せばよい。
uniform=Uniform(1, 3)
@show rand(uniform)
@show rand(uniform)
rand(uniform) = 1.7129958860630783
rand(uniform) = 2.999603195703844