# Random variables from one uniform distribution get added to create new rand var

Hi, all. I’m attempting to model what happens when random variables from one
distribution, specifically a uniform distribution, get added to create a new
random variable.
To begin with

``````begin
ua = 2.0.*rand(10000) .- 1.0;
histogram(ua,size=(300,300),leg=false)
end
``````

Trying to do a running average of `offset` nearest elements to the right

``````temp[i]=ua[i+1] + ua[i+2] + ... + ua[i+offset]
temp[i]=temp[i]/max(offset+1,1)
``````

Could use function instead of another internal loop?
When initializing `offset = 1` and plot a histogram of `temp`, i could use the values in `temp`, and then using the function `normal(x,σ)=(1/sqrt(2pi*σ^2))exp(-x^2/(2*σ^2))` for the theoretical distribution, need to superimpose the curve of the theoretical normal distribution on the histogram of `temp`.

``````begin
normal(x,σ)=(1/sqrt(2pi*σ^2))exp(-x^2/(2*σ^2))
offset=4
temp=zeros(length(ua))
for i =1:?
?
?
end
histogram(temp,norm=true,size=(300,300),leg=false)
σ2 = std(temp)
plot!(x->normal(x,σ2),-1,1)
end
``````

I’ve calculated the variance of 1/12. Know the standard deviation of a uniform distribution is `(b-a)/sqrt(12)` , However, cannot figure out for the life of me how to code for the theoretical standard deviation as a function of `offset` assuming independently drawn samples.

Welcome!

I’m not certain exactly what you are doing but the package Distributions might help. Here is a normal approximation to the sum of 3 uniform random variables.

``````using Plots, Distributions

n_vars = 3

n_samples = 10_000

dist = Uniform(0, 2)

samples = rand(dist, n_samples, n_vars)

sums = sum(samples, dims=2)

σ = sqrt(n_vars * var(dist))

μ = n_vars * mean(dist)

histogram(sums, leg=false, grid=false, norm=true)

x = 0:.1:6

dens = pdf.(Normal(μ, σ), x)

plot!(x, dens, color=:black, linestyle=:dash)
``````

You can use `var` on a distribution object to obtain the variance. Note that adding or subtracting an offset does not change the variance. You might consider looking up the linearity of expectation and variance. I hope this gets you started in the right direction.

2 Likes

Sounds like you’re looking for `cumsum`?

You’re absolutely right. Just thinking about it logically, variance won’t change by shifting the graph. Your code works well, too, and makes sense as increasing `n_vars` changes the graph in the way expected. The way the notebook is put together doesn’t make the most sense for the Julia Language. Although, this is the first term Mathematica hasn’t been used for this course.

1 Like

Also, consider the excellent course on Introduction to Probabilities at the MITx: https://www.edx.org/course/probability-the-science-of-uncertainty-and-data

1 Like