Se eu fosse gerar da normal truncada, eu iria proceder usando o método da inversa da acumulada. Talvez seja mais rápido. O com while pode demorar demais se a taxa de rejeição for grande. Por exemplo, o tempo para gerar sem números entre 0 e 1 é maior do que para gerar entre -1 e 1 porque a taxa de rejeição no primeiro caso é maior.

par(mfrow=c(1,2))
curve(dnorm(x, 0, 1), -3, 3)
abline(v=c(-0.5, 2), lty=2)
curve(pnorm(x, 0, 1), -3, 3)
abline(v=c(-0.5, 2), lty=2)
layout(1)

lim <- pnorm(c(-0.5, 2), 0, 1)
u <- runif(100, lim[1], lim[2])
y <- qnorm(u, 0, 1)

par(mfrow=c(1,2))
curve(dnorm(x, 0, 1), -3, 3)
abline(v=c(-0.5, 2), lty=2)
rug(y)
curve(pnorm(x, 0, 1), -3, 3)
abline(v=c(-0.5, 2), lty=2)
rug(u, side=2)
rug(y)
layout(1)

À disposição.
Walmes.