Implementation of a portable and reproducible parallel pseudorandom number generator

We describe in detail the parallel implementation of a family of additive lagged-Fibonacci pseudorandom number generators. The theoretical structure of these generators is exploited to preserve their well-known randomness properties and to provide a parallel system of distinct cycles. The algorithm presented here solves the reproducibility problem for a far larger class of parallel Monte Carlo applications than has been previously possible. In particular, Monte Carlo applications that undergo "splitting" can be coded to be reproducible, independent both of the number of processors and the execution order of the parallel processes. A library of portable C routines that implements these ideas is also described.<<ETX>>