using Plots
λ = 2.0
f(t) = λ * exp(-λ * t)
f (generic function with 1 method)
plot(f, 0, 5)
plot(0:0.1:5, f, m=:o)
r = 0:0.1:5
plot(r, f.(r), lw=3)
Rate: Probability per unit time
Probability to decay in time $\delta t$ is $\lambda \, \delta t$
g = t -> exp(-t) # anonymous function
# "the function which maps t to exp(-t)
# maths: t ↦ exp(-t)
plot(0:0.1:5, g)
plot!(2:0.1:3, g, fill=true, alpha=0.2)
rand() # uniform distribution in [0, 1]
0.3929231826863011
function uniform_pdf(x)
if 0 ≤ x ≤ 1
return 1.0
else
return 0.0
end
end
uniform_pdf (generic function with 1 method)
plot(-2:0.02:2, uniform_pdf, ratio=1)
function uniform_pdf(x, a, b)
if a ≤ x ≤ b
return 1 / (b - a)
else
return 0.0
end
end
uniform_pdf (generic function with 2 methods)
a = -0.5
b = 1.5
plot(-2:0.02:2, x -> uniform_pdf(x, a, b), ratio=1)
rand()
0.8021562956807884
2 * rand()
1.8620315965058123
scatter(2 .* rand(1000) .- 1)
"Generate a random variate which has a unif distn on [a, b]"
uniform(a, b) = a + rand() * (b - a)
uniform
scatter([uniform(-0.5, 1.5) for i in 1:1000])
data = [uniform(-0.5, 1.5) for i in 1:100];
histogram(data, nbins=20) # function in Plots.jl
scatter!(data, zero.(data), ms=2, alpha=0.3)
data = [uniform(-0.5, 1.5) for i in 1:1000]
histogram(data, nbins=20) # function in Plots.jl
scatter!(data, zero.(data), ms=2, alpha=0.3)
data = [uniform(-0.5, 1.5) for i in 1:100000]
histogram(data, nbins=20) # function in Plots.jl
# scatter!(data, zero.(data), ms=2, alpha=0.3)
data = [uniform(-0.5, 1.5) for i in 1:100]
histogram(data, nbins=20) # function in Plots.jl
scatter!(data, zero.(data), ms=2, alpha=0.3)
N = 100
data = [uniform(-0.5, 1.5) for i in 1:N]
plot(sort(data), 1/N:1/N:1) # empirical cumulative distribution function
plot!([-0.5, 1.5], [0, 1])
Kolmogorov--Smirnov test
N = 100000
data = [uniform(-0.5, 1.5) for i in 1:N]
plot(sort(data), 1/N:1/N:1) # empirical cumulative distribution function
plot!([-0.5, 1.5], [0, 1])
rand()
0.40236818178663336
N = 1000
data = (x -> x^2).(rand(N));
scatter(data)
N = 1000000
data = (x -> x^2).(rand(N));
stephist(data, nbins=1000, normed=true)
plot!(x -> 1 / (2*√x))
F(x) = 1 - exp(-λ*x)
F (generic function with 1 method)
$y = F(x)$
Solve for $x$ in terms of $y$
x = rand()
λ = 2
y = -log(x) / λ
0.5854715462996726
xs = rand(1000)
transformation(x, λ) = -log(x) / λ
λ = 2.0
data = transformation.(xs, λ);
scatter(data)
xs = rand(100000)
transformation(x, λ) = -log(x) / λ
λ = 2.0
data = transformation.(xs, λ);
stephist(data, nbins=1000, yscale=:log10, normed=true)
plot!(0:0.01:5, x->λ * exp(-λ *x), lw=3)