Input Distribution Random Number Generation

A random number generator (RNG) is required when using Monte Carlo simulations in order to draw random samples from the specified distribution. On a computer, the creation of a random number involves an algorithm that can automatically create long runs of numbers with good random properties. These algorithms are called pseudo-random number generators. The state of the RNG after each iteration is used as an input for the generation of the next random number. The initial state is called a seed; this seed can be derived using the system clock, or it can be specified by the user. In the latter case, the same sequence of numbers will be created each time the same seed is specified, which can be useful, for example, in a classroom setting where you want all students to obtain the same results. Stochastic optimization requires a fixed seed in order to avoid “chatter” that would result in inconsistent comparisons.

A good RNG will produce a long run of numbers which are independent, so that there is no correlation between successive numbers. Eventually, the sequence of numbers will repeat, since eventually the seed will repeat. The RNG used in DiscoverSim is based on a recur-with-carry “KISS+Monster” random number generator developed by George Marsaglia. This algorithm produces random integers between 0 and 232 – 1 and has a period of 108859. This implementation of the KISS+Monster algorithm has been tested and passes all of the Diehard tests (Marsaglia, 2003).