Software from Alan J. Miller

Applied statistics algorithms
Quadruple precision code (F)
Quadruple precision

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.