Program gives the implementations for the three concrete random variable classes declared in Program .

**Program:** `SimpleRV`, `UniformRV` and `ExponentialRV` Member Function Definitions

The implementation of the `SimpleRV` class is trivial
because the `RandomNumberGenerator` class generates
the desired distribution of random numbers.
Consequently, the `SimpleRV::Sample` function simply calls
`RandomNumberGenerator::Next`.

The `UniformRV` class is also quite simple.
Given that the `RandomNumberGenerator` class
generates a sequence random numbers uniformly distributed
on the interval (0,1),
the linear transformation

suffices to produce a sequence of random numbers
uniformly distributed on the interval (*u*,*v*).

The `ExponentialRV` class generates a sequence of random numbers, ,
*exponentially distributed*
on the interval and having a mean value .
The numbers are said to be *exponentially distributed* because
the probability that falls between 0 and *z* is given by

where .
The function *p*(*x*) is called the
*probability density function* .
Thus,

Notice that is a value between zero and one. Therefore, given a random variable, , uniformly distributed between zero and one, we can obtain an exponentially distributed variable as follows:

Note, if is uniformly distributed on (*O*,1),
then so too is .
The implementation of the `ExponentialRV::Sample` function
follows directly from Equation .

Copyright © 1997 by Bruno R. Preiss, P.Eng. All rights reserved.