c++boost.gif (8819 bytes) Home Libraries People FAQ More

Boost Random Number Library

By Jens Maurer

You should read the concepts documentation before moving on.

For a quick start, it may be sufficient to have a look at random_demo.cpp.

Header Contents
<boost/random.hpp>

documentation for generators
documentation for distributions
documentation for miscellaneous classes

Pseudo-random number generators (linear congruential, inversive congruential, and others), distribution functions (uniform, normal, exponential, and others) and miscellaneous decorator classes such as random_number_generator for use in simulations, games, and testing.
<boost/nondet_random.hpp>

documentation

Non-deterministic random number generators.

An extensive test suite for the pseudo-random number generators and distributions is available as random_test.cpp.

Rationale

The methods for generating and evaluating deterministic and non-deterministic random numbers differ radically. Furthermore, due to the inherent deterministic design of present-day computers, it is often difficult to implement non-deterministic random number generation facilities. Thus, the random number library is split into separate header files, mirroring the two different application domains.

History and Acknowledgements

In November 1999, Jeet Sukumaran proposed a framework based on virtual functions, and later sketched a template-based approach. Ed Brey pointed out that Microsoft Visual C++ does not support in-class member initializations and suggested the enum workaround. Dave Abrahams highlighted quantization issues.

The first public release of this random number library materialized in March 2000 after extensive discussions on the boost mailing list. Many thanks to Beman Dawes for his original min_rand class, portability fixes, documentation suggestions, and general guidance. Harry Erwin sent a header file which provided additional insight into the requirements. Ed Brey and Beman Dawes wanted an iterator-like interface.

Beman Dawes managed the formal review, during which Matthias Troyer, Csaba Szepesvari, and Thomas Holenstein gave detailed comments. The reviewed version became an official part of boost on 17 June 2000.

Gary Powell contributed suggestions for code cleanliness. Dave Abrahams and Howard Hinnant suggested to move the basic generator templates from namespace boost::detail to boost::random. Ed Brey pointed out how to avoid two superfluous warnings. Andreas Scherer tested with MSVC.


Jens Maurer, 2000-12-04