5.8 Pseudorandom Variates
In this section, we consider how to construct pseudorandom variates x[k] from pseudorandom numbers u[k]. We also consider how to construct joint-normal pseudorandom vectors x[k] from Un((0,1)n) pseudorandom vectors u[k]. We then consider how to use these with a crude Monte Carlo estimator.
Consider a random vector X with some specified distribution. Conceptually, we may construct pseudorandom vectors x[k] from pseudorandom vectors u[k] ~ Un((0,1)n) by selecting a function g: n → n that is probability preserving in the sense that X ~ g(U) for U ~ Un((0,1)n). We then set
5.8.1 Inverse transform method
Suppose X has CDF Φ with inverse Φ–1. Then Φ–1 is probability preserving in the foregoing sense. We set g = Φ–1 and generate pseudorandom variates from pseudorandom numbers using [5.43]. This is called the inverse transform method of pseudorandom variate generation.
An N(0,1) pseudorandom variate x[k] can be obtained from a pseudorandom number u[k] with this method. We apply the inverse standard normal CDF Φ–1 to a pseudorandom number u[k] to obtain x[k]. The transformation is illustrated in Exhibit 5.12 with evenly spaced values used as a proxy for pseudorandom numbers.
By [3.95], an N(μ,σ2) pseudorandom variate y[k] can be obtained from an N(0,1) pseudorandom variate x[k] by setting
By definition, a random variable Y is lognormal if log(Y) is normal. Correspondingly, if X is normal, eX is lognormal. To generate a Λ(μ,σ2) pseudorandom variate y[k], we apply [3.105] and [3.106] to determine the mean m and standard deviation s of the corresponding N(m,s2) distribution. We generate an N(m,s2) pseudorandom variate x[k] and set y[k] = .
These techniques for constructing normal and lognormal variates are widely used. Because they require the evaluation of the inverse CDF of the standard normal distribution for each pseudorandom variate generated, they are computationally expensive. If a large number of pseudorandom variates are required, it is worth exploring computationally more efficient algorithms. See Fishman (1996).
5.8.2 Joint-normal pseudorandom vectors
An Nn(0, I ) pseudorandom vector x[k] can be obtained by generating n N(0,1) pseudorandom variates x[i], and setting each component equal to one of them:
By [3.125], we can construct an Nn(μ,Σ) pseudorandom vector y[k] from an Nn(0, I ) pseudorandom vector x[k] by setting
where k is the Cholesky matrix of Σ.
Use pseudorandom number u = .983467 to generate an N(1,4) pseudorandom variate x.
Use pseudorandom number u = .762415 to generate a Λ(1,9) pseudorandom variate y.
Use U3((0,1)3) pseudorandom vector
to generate an N3(μ,Σ) pseudorandom vector, where