Fast truncated normal generator
Efficient state-of-the-art generator of a vector of length(l)=length(u)
from the standard multivariate normal distribution truncated over the region [l,u].
Infinite values for u
and l
are accepted.
trandn(l, u)
l |
lower truncation limit |
u |
upper truncation limit |
Suppose we wish to simulate a random variable Z drawn from N(μ,σ^2) and
conditional on l<Z<u using the inverse transform method.
To achieve this, first compute
X=norminvp(runif(1),(l-mu)/sig,(u-mu)/sig)
and then set
Z=mu+sig*X
random variable drawn from the truncated normal distribution
Use norminvp
for the (slower) inverse transform method of simulating truncated normal variables.
Zdravko I. Botev
Z. I. Botev (2017), The Normal Law Under Linear Restrictions: Simulation and Estimation via Minimax Tilting, Journal of the Royal Statistical Society, Series B, 79 (1), pp. 1–24.
trandn(l = 1,u = Inf) trandn(l = rep(1, 10), u = rep(Inf, 10))
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.