1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<title>Boost Random Number Library</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table border="1" bgcolor="#007F7F" cellpadding="2" summary="">
<tr>
<td bgcolor="#FFFFFF"><img src="../../boost.png" alt=
"boost.png (6897 bytes)" width="277" height="86"></td>
<td><a href="../../index.htm"><font face="Arial,Helvetica" color=
"#FFFFFF"><big>Home</big></font></a></td>
<td><a href="../libraries.htm"><font face="Arial,Helvetica" color=
"#FFFFFF"><big>Libraries</big></font></a></td>
<td><a href="http://www.boost.org/people/people.htm"><font face="Arial,Helvetica"
color="#FFFFFF"><big>People</big></font></a></td>
<td><a href="http://www.boost.org/more/faq.htm"><font face="Arial,Helvetica" color=
"#FFFFFF"><big>FAQ</big></font></a></td>
<td><a href="../../more/index.htm"><font face="Arial,Helvetica" color=
"#FFFFFF"><big>More</big></font></a></td>
</tr>
</table>
<h1>Boost Random Number Library</h1>
<p>Random numbers are useful in a variety of applications. The Boost Random
Number Library (Boost.Random for short) provides a vast variety of
generators and distributions to produce random numbers having useful
properties, such as uniform distribution.</p>
<p>You should read the <a href="random-concepts.html">concepts
documentation</a> for an introduction and the definition of the basic
concepts. For a quick start, it may be sufficient to have a look at
<a href="random_demo.cpp">random_demo.cpp</a>.</p>
<p>For a very quick start, here's an example:</p>
<pre>
boost::mt19937 rng; // produces randomness out of thin air
// see pseudo-random number generators
boost::uniform_int<> six(1,6) // distribution that maps to 1..6
// see random number distributions
boost::variate_generator<boost::mt19937&, boost::uniform_int<> >
die(rng, six); // glues randomness with mapping
int x = die(); // simulate rolling a die
</pre>
<h2>Library Organization</h2>
<p>The library is separated into several header files, all within the
<code>boost/random/</code> directory. Additionally, a convenience header
file which includes all other headers in <code>boost/random/</code> is
available as <code><a href=
"../../boost/random.hpp">boost/random.hpp</a></code>.</p>
<p>A front-end class template called <code>variate_generate</code> is
provided; please read the <a href="random-variate.html">documentation</a>
about it.</p>
<ul>
<li><code><a href=
"../../boost/random/variate_generator.hpp">boost/random/variate_generator.hpp</a></code></li>
</ul>Several random number generators are available in the following header
files; please read the <a href="random-generators.html">documentation</a>
about these.
<ul>
<li><code><a href=
"../../boost/random/linear_congruential.hpp">boost/random/linear_congruential.hpp</a></code></li>
<li><code><a href=
"../../boost/random/additive_combine.hpp">boost/random/additive_combine.hpp</a></code></li>
<li><code><a href=
"../../boost/random/inversive_congruential.hpp">boost/random/inversive_congruential.hpp</a></code></li>
<li><code><a href=
"../../boost/random/shuffle_output.hpp">boost/random/shuffle_output.hpp</a></code></li>
<li><code><a href=
"../../boost/random/mersenne_twister.hpp">boost/random/mersenne_twister.hpp</a></code></li>
<li><code><a href=
"../../boost/random/lagged_fibonacci.hpp">boost/random/lagged_fibonacci.hpp</a></code></li>
</ul>Similarly, several random number distributions are available in the
following header files; please read the <a href=
"random-distributions.html">documentation</a> about these.
<ul>
<li><code><a href=
"../../boost/random/uniform_smallint.hpp">boost/random/uniform_smallint.hpp</a></code></li>
<li><code><a href=
"../../boost/random/uniform_int.hpp">boost/random/uniform_int.hpp</a></code></li>
<li><code><a href=
"../../boost/random/uniform_01.hpp">boost/random/uniform_01.hpp</a></code></li>
<li><code><a href=
"../../boost/random/uniform_real.hpp">boost/random/uniform_real.hpp</a></code></li>
<li><code><a href=
"../../boost/random/triangle_distribution.hpp">boost/random/triangle_distribution.hpp</a></code></li>
<li><code><a href=
"../../boost/random/bernoulli_distribution.hpp">boost/random/bernoulli_distribution.hpp</a></code></li>
<li><code><a href=
"../../boost/random/cauchy_distribution.hpp">boost/random/cauchy_distribution.hpp</a></code></li>
<li><code><a href=
"../../boost/random/exponential_distribution.hpp">boost/random/exponential_distribution.hpp</a></code></li>
<li><code><a href=
"../../boost/random/geometric_distribution.hpp">boost/random/geometric_distribution.hpp</a></code></li>
<li><code><a href=
"../../boost/random/normal_distribution.hpp">boost/random/normal_distribution.hpp</a></code></li>
<li><code><a href=
"../../boost/random/lognormal_distribution.hpp">boost/random/lognormal_distribution.hpp</a></code></li>
<li><code><a href=
"../../boost/random/uniform_on_sphere.hpp">boost/random/uniform_on_sphere.hpp</a></code></li>
</ul>Additionally, non-deterministic random number generators are available
in the header <code><a href=
"../../boost/nondet_random.hpp"><boost/nondet_random.hpp></a></code>.
<a href="nondet_random.html">Documentation</a> is also available.
<p>In order to map the interface of the generators and distribution
functions to other concepts, some <a href="random-misc.html">decorators</a>
are available.</p>
<h2>Tests</h2>
<p>An extensive test suite for the pseudo-random number generators and
distributions is available as <a href=
"random_test.cpp">random_test.cpp</a>.</p>
<p>Some <a href="random-performance.html">performance results</a> obtained
using <a href="random_speed.cpp">random_speed.cpp</a> are also
available.</p>
<h2>Rationale</h2>
<p>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.</p>
<h2>History and Acknowledgements</h2>
<p>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 <code>enum</code> workaround. Dave
Abrahams highlighted quantization issues.</p>
<p>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 <code>min_rand</code> 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.</p>
<p>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.</p>
<p>Gary Powell contributed suggestions for code cleanliness. Dave Abrahams
and Howard Hinnant suggested to move the basic generator templates from
namespace <code>boost::detail</code> to <code>boost::random</code>.</p>
<p>Ed Brey asked to remove superfluous warnings and helped with
<code>uint64_t</code> handling. Andreas Scherer tested with MSVC. Matthias
Troyer contributed a lagged Fibonacci generator. Michael Stevens found a
bug in the copy semantics of normal_distribution and suggested
documentation improvements.</p>
<hr>
<p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src=
"http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01 Transitional"
height="31" width="88"></a></p>
<p>Revised
<!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->05
December, 2006<!--webbot bot="Timestamp" endspan i-checksum="38516" --></p>
<p><i>Copyright © 2000-2005 <a href=
"http://www.boost.org/people/jens_maurer.htm">Jens Maurer</a></i></p>
<p><i>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href=
"http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</i></p>
</body>
</html>
|