Skip to main content
    • Aa
    • Aa

Evaluation of splittable pseudo-random generators*


Pseudo-random number generation is a fundamental problem in computer programming. In the case of sequential processing the problem is very well researched, but parallel processing raises new problems whereof far too little is currently understood. Splittable pseudo-random generators (S-PRNG) have been proposed to meet the challenges of parallelism. While applicable to any programming paradigm, they are designed to be particularly suitable for pure functional programming. In this paper, we review and evaluate known constructions of such generators, and we identify flaws in several large classes of generators, including Lehmer trees, the implementation in Haskell's standard library, leapfrog, and subsequencing (substreaming).

Hide All

The research was partially funded by Regionalt Forskingsfond Midt-Norge through the project Dynamic Resource Allocation with Maritime Application (DRAMA), grant no. ES504913.

Linked references
Hide All

This list contains references from the content that can be linked to their source. For a full set of references and notes please see the PDF or HTML where available.

D. G. Carta (1990) Two fast implementations of the minimal standard random number generator. Commun. ACM 33 (1), 8788.

K. Claessen & M. H. Pałka (2013a) Splittable pseudorandom number generators using cryptographic hashing. In Proceedings of the 2013 ACM SIGPLAN Symposium on Haskell. Haskell'13. New York, NY, USA: ACM, pp. 4758.

A. De Matteis & S. Pagnutti (1990) Long-range correlations in linear and non-linear random number generators. Parallel Comput. 14 (2), 207210.

W. F. Eddy (1990) Random number generators for parallel processors. J. Comput. Appl. Math., 31 (1), 6371.

P. Frederickson , R. Hiromoto , T. L. Jordan , B. Smith & T. Warnock (1984) Pseudo-random trees in Monte Carlo. Parallel Comput. 1 (2), 175180.

J. H. Halton (1989) Pseudo-random trees: Multiple independent sequence generators for parallel and branching computations. J. Comput. Phys. 84 (1), 156.

M. S. Klamkin & D. J. Newman (1967) Extensions of the birthday surprise. J. Comb. Theory 3 (3), 279282.

A. E. Koniges & C. E. Leith (1989) Parallel processing of random number generation for Monte Carlo turbulence simulation. J. Comput. Phys. 81 (1), 230235.

H. Krawczyk (1992) How to predict congruential generators. J. Algorithms 13 (4), 527545.

P. L'Ecuyer (1988) Efficient and portable combined random number generators. Commun. ACM 31 (6), 742749 and 774.

P. L'Ecuyer (2012) Random number generation. In Handbook of Computational Statistics: Concepts and Methods, J. E. Gentle , W. K. Härdle & Y. Mori (eds), 2nd ed., Springer, pp. 3571.

P. L'Ecuyer & R. Simard (2007) TestU01: A C library for empirical testing of random number generators. ACM Trans. Math. Softw. 33 (4), Article no. 22.

P. L'Ecuyer , R. Simard , E. J. Chen & W. D. Kelton (2002) An objected-oriented random-number package with many long streams and substreams. Oper. Res. 50 (6), 10731075.

C. E. Leiserson , T. B. Schardl & J. Sukha (2012) Deterministic parallel random-number generation for dynamic-multithreading platforms. ACM SIGPLAN Not. 47 (8), 193204.

G. Marsaglia (1968) Random numbers fall mainly in the planes. Proc.Natl. Acad. Sci. United States Am. 61 (1), 2528.

M. Mascagni (1998) Parallel linear congruential generators with prime moduli. Parallel Comput. 24 (5–6), 923936.

M. Matsumoto , I. Wada , A. Kuramoto & H. Ashihara (2007) Common defects in initialization of pseudorandom number generators. ACM Trans. Model. Comput. Simul. 17 (4), Article no. 15.

S. K. Park & K. W. Miller (1988) Random number generators: Good ones are hard to find. Commun. ACM 31 (10), 11921201.

Ora E. Percus & M. H. Kalos (1989) Random number generators for MIMD parallel processors. J. Parallel Distrib. Comput. 6 (3), 477497.

Guy L. Steele Jr., D. Lea & C. H. Flood (2014) Fast splittable pseudorandom number generators. ACM SIGPLAN Not. 49 (10), 453472.

P.-C. Wu & K.-C. Huang (2006) Parallel use of multiplicative congruential random number generators. Comput. Phys. Commun. 175 (1), 2529.

Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Journal of Functional Programming
  • ISSN: 0956-7968
  • EISSN: 1469-7653
  • URL: /core/journals/journal-of-functional-programming
Please enter your name
Please enter a valid email address
Who would you like to send this to? *


Full text views

Total number of HTML views: 0
Total number of PDF views: 20 *
Loading metrics...

Abstract views

Total abstract views: 110 *
Loading metrics...

* Views captured on Cambridge Core between September 2016 - 26th September 2017. This data will be updated every 24 hours.