I'm trying to understand the distribution, mean, and variance of a normal random variable, with the mean parameter having a uniform distribution. Based on my R simulations it seems that this compound distribution is close to normal, with the mean equals to the mean of the uniform distribution and variance equal to the sum of normal and uniform variances.

a <- 1
b <- 5
x <- runif(n, min=a, max=b)
std <- 3
c <- rnorm(n, mean=x, sd=std)

c(mean(c), (a+b)/2)
c(var(c), var(x) + std^2)

Is my guess correct? Can I find a proof of that? There is little information on the web on this type of compound distributions. Thanks.

  • $\begingroup$ Welcome to stats.SE! Please take a moment to view our tour. Why are you trying to determine this type of mixed distribution? What is your goal? $\endgroup$
    – Tavrock
    Feb 9, 2017 at 4:04
  • $\begingroup$ Hi @Tavrock! I'm interested in this distribution due to a particular problem I'm working on. I have a forecast for a random variable mean (long term return on a financial asset) and its standard deviation. It is provided by a third party and is not estimated from any historical sample. I also assume a normal distribution for this r.v. But I'm not sure that the forecast is accurate. Therefore, I assume that a range of means is equally probable, (uniform distribution). I.e. I'm trying to incorporate uncertainty about the parameters into my model. $\endgroup$
    – Mikhail
    Feb 10, 2017 at 13:03

2 Answers 2


You can compute the mean and variance of the compound distribution $X$ with the law of total expectation and law of total variance.


$$ E[X] = E \left[ E [X \mid U ] \right] = E[U] = \frac{b + a}{2}$$

Which is, as you observe, the mean of the uniform distribution.


$$ Var[X] = E[ Var[X \mid U] ] + Var[ E[X \mid U ] ] = E[3^2] + Var[U] = 9 + \frac{(b - a)^2}{12} $$

Which is, as you observe, the sum of the two variances.

The compound distribution can certainly be far from normal. Consider the case where the standard deviation of the normal distribution is very small in relation to the width of the uniform distribution.

u <- runif(10000)
n <- rnorm(10000, mean=u, sd=0.01)

hist(n, breaks=100)

A Histogram of the resulting distribution, it looks unifrorm

  • $\begingroup$ Thanks, this is very helpful! I was not sure if it is normal distribution or not, but your example shows that it is not necesseraly normal. $\endgroup$
    – Mikhail
    Feb 10, 2017 at 12:39

Distribution that is related to special case of your question was described by Bhattacharjee, Pandit, and Mohan (1963). It assumes that uniform distribution is centered around the global mean $\mu$ and has $(\mu-a, \mu+a)$ bounds.

In standard form it has probability density function

$$ f(z) = \frac{1}{2a} \left[\Phi\left(z+a\right) - \Phi\left(z-a\right)\right] $$

and cumulative distribution function

$$ F(z) = \frac{1}{2a} \left[z\,\Phi\left(z+a\right) - z\,\Phi\left(z-a\right) + \phi\left(z+a\right) - \phi\left(z-a\right)\right] $$

where $\Phi$ is a standard normal cdf and $\phi$ is a standard normal pdf.

It emerges when $U \sim \mathcal{U}(\mu-a, \mu+a)$ and $X \sim \mathcal{N}(\mu, \sigma^2)$, then $Z = U+X$ follows the distribution described by Bhattacharjee et al.



u <- runif(10000, -1, 1)
n <- rnorm(10000, mean=u, sd=1)

hist(n, breaks=100, freq = F)
curve(dbhatt(x, 0, 1, 1), -6, 6, add = T, col = "red")

Bhattacharjee distribution


u <- runif(10000, -3, 3)
n <- rnorm(10000, mean=u, sd=1)

hist(n, breaks=100, freq = F)
curve(dbhatt(x, 0, 1, 3), -6, 6, add = T, col = "red")

Bhattacharjee distribution

Bhattacharjee, G.P., Pandit, S.N.N., and Mohan, R. (1963). Dimensional chains involving rectangular and normal error-distributions. Technometrics, 5, 404-406.

  • $\begingroup$ Fantastic answer, thanks a lot! I did not know about the Bhattacharjee distribution and its function in R. $\endgroup$
    – Mikhail
    Feb 10, 2017 at 12:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.