 # Software from Alan J. Miller

 Index Applied statistics algorithms Quadruple precision code (F) Quadruple precision Random Toms

## Uniform Random Number Generation

• luxury.f90 Another generator of uniformly distributed random numbers. luxtst.f90 A program to test luxury.f90.
• taus88.f90 L'Ecuyer's 1996 Tausworthe random number generator, and lfsr113.f90 L'Ecuyer's 1999 Tausworthe random number generator. The first has a cycle of 2^88 while the second is a little slower but has a cycle of 2^113. Both are translations from C. N.B. These both assume that default integers are 32-bit.
• lfsr258.f90 A 64-bit random number generator from Pierre L'Ecuyer with a cycle of about 2^258 or more than 10^77.
• dprand.f90 Nick Maclaren's double precision random number generator, translated into ELF90-compatible form.
• mt19937.f90 The 'Mersenne Twister' random number generator from Japan with a cycle of length (2^19937 - 1). mt19937a.f90 is a version for compilers which stop when there are integer overflows, as some do when compiler check options are enabled for debugging purposes. mt19937.f90 was revised on 5 February 2002; mt19937a.f90 has not been revised.
• rand3.f90 Yet another random number generator; this one is based upon an algorithm by Donald Knuth (1997).
• freq2d.f90 Pairs of uniform random numbers should be uniformly distributed in the unit square. This is a simple test program which failed using a new (1998) compiler. ELF90-compatible.
• ## Random numbers from other distributions

• random.f90 A module for generating random numbers from a range of distributions. There is a test program t_random.f90. Another library for random number generation can be found at randlib.
• ran_norm.f90 and rnorm.f90 Generate random numbers from the standard normal distribution. ran_norm uses more random number calls, but rnorm uses more logarithms and square roots. On those machine/compiler combinations which have been tested recently, rnorm has usually been faster (5-20%).
• r_gamma.f90 and rgamma.f90 Generate random numbers from the gamma distribution. The first routine is adapted from Dagpunar's book, while the second is by Marsaglia and Bray.
• ignpoi.f90 Generate random Poisson deviates. Requires ran_exp.f90.
• ran_exp.f90 Generate random exponential deviates, simple method.
• toms780.f90 Generate random exponential deviates; two algorithms from TOMS algorithm 780.
• test780.f90 A program to compare speeds of 3 different generators.
• t_kemp_b.f90 Generate random binomial deviates, including a small driver program.
• zipf.f90 Generate discrete random deviates having the Zipf (or zeta) distribution, with a small test program.
• toms668.f90 The file for r_hyperg.f90 contains TOMS algorithm 668 for generating random values from the hypergeometric distribution.
• ziggurat.f90 George Marsaglia's functions for generating random samples from the uniform, normal and exponential distributions. Translated from C.