1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html> 3<head> 4<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5<title>Reference</title> 6<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> 7<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> 8<link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> 9<link rel="up" href="../boost_random.html" title="Chapter 33. Boost.Random"> 10<link rel="prev" href="tutorial.html" title="Tutorial"> 11<link rel="next" href="../boost/random/additive_combine_engine.html" title="Class template additive_combine_engine"> 12</head> 13<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> 14<table cellpadding="2" width="100%"><tr> 15<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td> 16<td align="center"><a href="../../../index.html">Home</a></td> 17<td align="center"><a href="../../../libs/libraries.htm">Libraries</a></td> 18<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> 19<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> 20<td align="center"><a href="../../../more/index.htm">More</a></td> 21</tr></table> 22<hr> 23<div class="spirit-nav"> 24<a accesskey="p" href="tutorial.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_random.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../boost/random/additive_combine_engine.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> 25</div> 26<div class="section"> 27<div class="titlepage"><div><div><h2 class="title" style="clear: both"> 28<a name="boost_random.reference"></a><a class="link" href="reference.html" title="Reference">Reference</a> 29</h2></div></div></div> 30<div class="toc"><dl class="toc"> 31<dt><span class="section"><a href="reference.html#boost_random.reference.concepts">Concepts</a></span></dt> 32<dt><span class="section"><a href="reference.html#boost_random.reference.generators">Generators</a></span></dt> 33<dt><span class="section"><a href="reference.html#boost_random.reference.distributions">Distributions</a></span></dt> 34<dt><span class="section"><a href="reference.html#boost_random.reference.utilities">Utilities</a></span></dt> 35<dt><span class="section"><a href="reference.html#headers">Headers</a></span></dt> 36</dl></div> 37<div class="section"> 38<div class="titlepage"><div><div><h3 class="title"> 39<a name="boost_random.reference.concepts"></a><a class="link" href="reference.html#boost_random.reference.concepts" title="Concepts">Concepts</a> 40</h3></div></div></div> 41<div class="toc"><dl class="toc"> 42<dt><span class="section"><a href="reference.html#boost_random.reference.concepts.introduction">Introduction</a></span></dt> 43<dt><span class="section"><a href="reference.html#boost_random.reference.concepts.uniform_random_number_generator">Uniform 44 Random Number Generator</a></span></dt> 45<dt><span class="section"><a href="reference.html#boost_random.reference.concepts.non_deterministic_uniform_random_number_generator">Non-deterministic 46 Uniform Random Number Generator</a></span></dt> 47<dt><span class="section"><a href="reference.html#boost_random.reference.concepts.pseudo_random_number_generator">Pseudo-Random 48 Number Generator</a></span></dt> 49<dt><span class="section"><a href="reference.html#boost_random.reference.concepts.quasi_random_number_generator">Quasi-Random 50 Number Generator</a></span></dt> 51<dt><span class="section"><a href="reference.html#boost_random.reference.concepts.seed_sequence">Seed 52 Sequence</a></span></dt> 53<dt><span class="section"><a href="reference.html#boost_random.reference.concepts.random_distribution">Random 54 Distribution</a></span></dt> 55</dl></div> 56<div class="section"> 57<div class="titlepage"><div><div><h4 class="title"> 58<a name="boost_random.reference.concepts.introduction"></a><a class="link" href="reference.html#boost_random.reference.concepts.introduction" title="Introduction">Introduction</a> 59</h4></div></div></div> 60<p> 61 Random numbers are required in a number of different problem domains, such 62 as 63 </p> 64<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> 65<li class="listitem"> 66 numerics (simulation, Monte-Carlo integration) 67 </li> 68<li class="listitem"> 69 games (non-deterministic enemy behavior) 70 </li> 71<li class="listitem"> 72 security (key generation) 73 </li> 74<li class="listitem"> 75 testing (random coverage in white-box tests) 76 </li> 77</ul></div> 78<p> 79 The Boost Random Number Generator Library provides a framework for random 80 number generators with well-defined properties so that the generators can 81 be used in the demanding numerics and security domains. For a general introduction 82 to random numbers in numerics, see 83 </p> 84<div class="blockquote"><blockquote class="blockquote"><p> 85 "Numerical Recipes in C: The art of scientific computing", 86 William H. Press, Saul A. Teukolsky, William A. Vetterling, Brian P. 87 Flannery, 2nd ed., 1992, pp. 274-328 88 </p></blockquote></div> 89<p> 90 Depending on the requirements of the problem domain, different variations 91 of random number generators are appropriate: 92 </p> 93<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> 94<li class="listitem"> 95 non-deterministic random number generator 96 </li> 97<li class="listitem"> 98 pseudo-random number generator 99 </li> 100<li class="listitem"> 101 quasi-random number generator 102 </li> 103</ul></div> 104<p> 105 All variations have some properties in common, the concepts (in the STL 106 sense) is called <a class="link" href="reference.html#boost_random.reference.concepts.uniform_random_number_generator" title="Uniform Random Number Generator">UniformRandomNumberGenerator</a>. 107 This concept will be defined in a subsequent section. 108 </p> 109<p> 110 The goals for this library are the following: 111 </p> 112<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> 113<li class="listitem"> 114 allow easy integration of third-party random-number generators 115 </li> 116<li class="listitem"> 117 provide easy-to-use front-end classes which model popular distributions 118 </li> 119<li class="listitem"> 120 provide maximum efficiency 121 </li> 122</ul></div> 123</div> 124<div class="section"> 125<div class="titlepage"><div><div><h4 class="title"> 126<a name="boost_random.reference.concepts.uniform_random_number_generator"></a><a class="link" href="reference.html#boost_random.reference.concepts.uniform_random_number_generator" title="Uniform Random Number Generator">Uniform 127 Random Number Generator</a> 128</h4></div></div></div> 129<p> 130 A uniform random number generator provides a sequence of random numbers 131 uniformly distributed on a given range. The range can be compile-time fixed 132 or available (only) after run-time construction of the object. 133 </p> 134<p> 135 The <span class="emphasis"><em>tight lower bound</em></span> of some (finite) set S is the 136 (unique) member l in S, so that for all v in S, l <= v holds. Likewise, 137 the <span class="emphasis"><em>tight upper bound</em></span> of some (finite) set S is the 138 (unique) member u in S, so that for all v in S, v <= u holds. 139 </p> 140<p> 141 In the following table, X denotes a number generator class returning objects 142 of type T, and v is a const value of X. 143 </p> 144<div class="table"> 145<a name="boost_random.reference.concepts.uniform_random_number_generator.uniformrandomnumbergenerator_requirements"></a><p class="title"><b>Table 33.1. UniformRandomNumberGenerator requirements</b></p> 146<div class="table-contents"><table class="table" summary="UniformRandomNumberGenerator requirements"> 147<colgroup> 148<col> 149<col> 150<col> 151</colgroup> 152<thead><tr> 153<th> 154 <p> 155 expression 156 </p> 157 </th> 158<th> 159 <p> 160 return type 161 </p> 162 </th> 163<th> 164 <p> 165 pre/post-condition 166 </p> 167 </th> 168</tr></thead> 169<tbody> 170<tr> 171<td> 172 <p> 173 <code class="computeroutput"><span class="identifier">X</span><span class="special">::</span><span class="identifier">result_type</span></code> 174 </p> 175 </td> 176<td> 177 <p> 178 <code class="computeroutput"><span class="identifier">T</span></code> 179 </p> 180 </td> 181<td> 182 <p> 183 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">is_specialized</span></code> is <code class="computeroutput"><span class="keyword">true</span></code>, <code class="computeroutput"><span class="identifier">T</span></code> 184 is <a href="../../../doc/html/LessThanComparable.html" target="_top">LessThanComparable</a> 185 </p> 186 </td> 187</tr> 188<tr> 189<td> 190 <p> 191 <code class="computeroutput"><span class="identifier">u</span><span class="special">.</span><span class="keyword">operator</span><span class="special">()()</span></code> 192 </p> 193 </td> 194<td> 195 <p> 196 <code class="computeroutput"><span class="identifier">T</span></code> 197 </p> 198 </td> 199<td> 200 <p> 201 - 202 </p> 203 </td> 204</tr> 205<tr> 206<td> 207 <p> 208 <code class="computeroutput"><span class="identifier">v</span><span class="special">.</span><span class="identifier">min</span><span class="special">()</span></code> 209 </p> 210 </td> 211<td> 212 <p> 213 <code class="computeroutput"><span class="identifier">T</span></code> 214 </p> 215 </td> 216<td> 217 <p> 218 tight lower bound on the set of all values returned by <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code>. 219 The return value of this function shall not change during the 220 lifetime of the object. 221 </p> 222 </td> 223</tr> 224<tr> 225<td> 226 <p> 227 <code class="computeroutput"><span class="identifier">v</span><span class="special">.</span><span class="identifier">max</span><span class="special">()</span></code> 228 </p> 229 </td> 230<td> 231 <p> 232 <code class="computeroutput"><span class="identifier">T</span></code> 233 </p> 234 </td> 235<td> 236 <p> 237 if <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">is_integer</span></code>, tight upper bound 238 on the set of all values returned by <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code>, otherwise, the smallest representable 239 number larger than the tight upper bound on the set of all values 240 returned by <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code>. In any case, the return value 241 of this function shall not change during the lifetime of the 242 object. 243 </p> 244 </td> 245</tr> 246</tbody> 247</table></div> 248</div> 249<br class="table-break"><p> 250 The member functions <code class="computeroutput"><span class="identifier">min</span></code>, 251 <code class="computeroutput"><span class="identifier">max</span></code>, and <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code> 252 shall have amortized constant time complexity. 253 </p> 254<div class="note"><table border="0" summary="Note"> 255<tr> 256<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td> 257<th align="left">Note</th> 258</tr> 259<tr><td align="left" valign="top"> 260<p> 261 For integer generators (i.e. integer <code class="computeroutput"><span class="identifier">T</span></code>), 262 the generated values <code class="computeroutput"><span class="identifier">x</span></code> 263 fulfill <code class="computeroutput"><span class="identifier">min</span><span class="special">()</span> 264 <span class="special"><=</span> <span class="identifier">x</span> 265 <span class="special"><=</span> <span class="identifier">max</span><span class="special">()</span></code>, for non-integer generators (i.e. non-integer 266 <code class="computeroutput"><span class="identifier">T</span></code>), the generated values 267 <code class="computeroutput"><span class="identifier">x</span></code> fulfill <code class="computeroutput"><span class="identifier">min</span><span class="special">()</span> <span class="special"><=</span> <span class="identifier">x</span> <span class="special"><</span> <span class="identifier">max</span><span class="special">()</span></code>. 268 </p> 269<p> 270 Rationale: The range description with min and max serves two purposes. 271 First, it allows scaling of the values to some canonical range, such 272 as [0..1). Second, it describes the significant bits of the values, which 273 may be relevant for further processing. 274 </p> 275<p> 276 The range is a closed interval [min,max] for integers, because the underlying 277 type may not be able to represent the half-open interval [min,max+1). 278 It is a half-open interval [min, max) for non-integers, because this 279 is much more practical for borderline cases of continuous distributions. 280 </p> 281</td></tr> 282</table></div> 283<div class="note"><table border="0" summary="Note"> 284<tr> 285<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td> 286<th align="left">Note</th> 287</tr> 288<tr><td align="left" valign="top"> 289<p> 290 The <a class="link" href="reference.html#boost_random.reference.concepts.uniform_random_number_generator" title="Uniform Random Number Generator">UniformRandomNumberGenerator</a> 291 concept does not require <code class="computeroutput"><span class="keyword">operator</span><span class="special">()(</span><span class="keyword">long</span><span class="special">)</span></code> and thus it does not fulfill the <code class="computeroutput"><span class="identifier">RandomNumberGenerator</span></code> (std:25.2.11 292 [lib.alg.random.shuffle]) requirements. Use the <code class="computeroutput"><a class="link" href="../boost/random/random_number_generator.html" title="Class template random_number_generator">random_number_generator</a></code> 293 adapter for that. 294 </p> 295<p> 296 Rationale: <code class="computeroutput"><span class="keyword">operator</span><span class="special">()(</span><span class="keyword">long</span><span class="special">)</span></code> 297 is not provided, because mapping the output of some generator with integer 298 range to a different integer range is not trivial. 299 </p> 300</td></tr> 301</table></div> 302</div> 303<div class="section"> 304<div class="titlepage"><div><div><h4 class="title"> 305<a name="boost_random.reference.concepts.non_deterministic_uniform_random_number_generator"></a><a class="link" href="reference.html#boost_random.reference.concepts.non_deterministic_uniform_random_number_generator" title="Non-deterministic Uniform Random Number Generator">Non-deterministic 306 Uniform Random Number Generator</a> 307</h4></div></div></div> 308<p> 309 A non-deterministic uniform random number generator is a <a class="link" href="reference.html#boost_random.reference.concepts.uniform_random_number_generator" title="Uniform Random Number Generator">UniformRandomNumberGenerator</a> 310 that is based on some stochastic process. Thus, it provides a sequence 311 of truly-random numbers. Examples for such processes are nuclear decay, 312 noise of a Zehner diode, tunneling of quantum particles, rolling a die, 313 drawing from an urn, and tossing a coin. Depending on the environment, 314 inter-arrival times of network packets or keyboard events may be close 315 approximations of stochastic processes. 316 </p> 317<p> 318 The class <code class="computeroutput"><a class="link" href="../boost/random/random_device.html" title="Class random_device">random_device</a></code> 319 is a model for a non-deterministic random number generator. 320 </p> 321<div class="note"><table border="0" summary="Note"> 322<tr> 323<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td> 324<th align="left">Note</th> 325</tr> 326<tr><td align="left" valign="top"><p> 327 This type of random-number generator is useful for security applications, 328 where it is important to prevent an outside attacker from guessing the 329 numbers and thus obtaining your encryption or authentication key. Thus, 330 models of this concept should be cautious not to leak any information, 331 to the extent possible by the environment. For example, it might be advisable 332 to explicitly clear any temporary storage as soon as it is no longer 333 needed. 334 </p></td></tr> 335</table></div> 336</div> 337<div class="section"> 338<div class="titlepage"><div><div><h4 class="title"> 339<a name="boost_random.reference.concepts.pseudo_random_number_generator"></a><a class="link" href="reference.html#boost_random.reference.concepts.pseudo_random_number_generator" title="Pseudo-Random Number Generator">Pseudo-Random 340 Number Generator</a> 341</h4></div></div></div> 342<p> 343 A pseudo-random number generator is a <a class="link" href="reference.html#boost_random.reference.concepts.uniform_random_number_generator" title="Uniform Random Number Generator">UniformRandomNumberGenerator</a> 344 which provides a deterministic sequence of pseudo-random numbers, based 345 on some algorithm and internal state. <code class="computeroutput"><a class="link" href="../boost/random/linear_congruential_engine.html" title="Class template linear_congruential_engine">Linear 346 congruential</a></code> and <code class="computeroutput"><a class="link" href="../boost/random/invers_1_3_34_5_6_20_1_1_1.html" title="Class template inversive_congruential_engine">inversive 347 congruential</a></code> generators are examples of such <a class="link" href="reference.html#boost_random.reference.concepts.pseudo_random_number_generator" title="Pseudo-Random Number Generator">pseudo-random 348 number generators</a>. Often, these generators are very sensitive to 349 their parameters. In order to prevent wrong implementations from being 350 used, an external testsuite should check that the generated sequence and 351 the validation value provided do indeed match. 352 </p> 353<p> 354 Donald E. Knuth gives an extensive overview on pseudo-random number generation 355 in his book "The Art of Computer Programming, Vol. 2, 3rd edition, 356 Addison-Wesley, 1997". The descriptions for the specific generators 357 contain additional references. 358 </p> 359<div class="note"><table border="0" summary="Note"> 360<tr> 361<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td> 362<th align="left">Note</th> 363</tr> 364<tr><td align="left" valign="top"><p> 365 Because the state of a pseudo-random number generator is necessarily 366 finite, the sequence of numbers returned by the generator will loop eventually. 367 </p></td></tr> 368</table></div> 369<p> 370 In addition to the <a class="link" href="reference.html#boost_random.reference.concepts.uniform_random_number_generator" title="Uniform Random Number Generator">UniformRandomNumberGenerator</a> 371 requirements, a pseudo-random number generator has some additional requirements. 372 In the following table, <code class="computeroutput"><span class="identifier">X</span></code> 373 denotes a pseudo-random number generator class, <code class="computeroutput"><span class="identifier">u</span></code> 374 is a value of <code class="computeroutput"><span class="identifier">X</span></code>, <code class="computeroutput"><span class="identifier">i</span></code> is a value of integral type, <code class="computeroutput"><span class="identifier">s</span></code> is a value of a type which models 375 <a class="link" href="reference.html#boost_random.reference.concepts.seed_sequence" title="Seed Sequence">SeedSeq</a>, 376 and <code class="computeroutput"><span class="identifier">j</span></code> a value of type 377 <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">long</span> 378 <span class="keyword">long</span></code>. 379 </p> 380<div class="table"> 381<a name="boost_random.reference.concepts.pseudo_random_number_generator.pseudorandomnumbergenerator_requirements"></a><p class="title"><b>Table 33.2. PseudoRandomNumberGenerator requirements</b></p> 382<div class="table-contents"><table class="table" summary="PseudoRandomNumberGenerator requirements"> 383<colgroup> 384<col> 385<col> 386<col> 387</colgroup> 388<thead><tr> 389<th> 390 <p> 391 expression 392 </p> 393 </th> 394<th> 395 <p> 396 return type 397 </p> 398 </th> 399<th> 400 <p> 401 pre/post-condition 402 </p> 403 </th> 404</tr></thead> 405<tbody> 406<tr> 407<td> 408 <p> 409 <code class="computeroutput"><span class="identifier">X</span><span class="special">()</span></code> 410 </p> 411 </td> 412<td> 413 <p> 414 - 415 </p> 416 </td> 417<td> 418 <p> 419 creates a generator with a default seed. 420 </p> 421 </td> 422</tr> 423<tr> 424<td> 425 <p> 426 <code class="computeroutput"><span class="identifier">X</span><span class="special">(</span><span class="identifier">i</span><span class="special">)</span></code> 427 </p> 428 </td> 429<td> 430 <p> 431 - 432 </p> 433 </td> 434<td> 435 <p> 436 creates a generator seeding it with the integer <code class="computeroutput"><span class="identifier">i</span></code>. 437 </p> 438 </td> 439</tr> 440<tr> 441<td> 442 <p> 443 <code class="computeroutput"><span class="identifier">X</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code> 444 </p> 445 </td> 446<td> 447 <p> 448 - 449 </p> 450 </td> 451<td> 452 <p> 453 creates a generator setting its initial state from the <a class="link" href="reference.html#boost_random.reference.concepts.seed_sequence" title="Seed Sequence">SeedSeq</a> 454 <code class="computeroutput"><span class="identifier">s</span></code>. 455 </p> 456 </td> 457</tr> 458<tr> 459<td> 460 <p> 461 <code class="computeroutput"><span class="identifier">u</span><span class="special">.</span><span class="identifier">seed</span><span class="special">(...)</span></code> 462 </p> 463 </td> 464<td> 465 <p> 466 <code class="computeroutput"><span class="keyword">void</span></code> 467 </p> 468 </td> 469<td> 470 <p> 471 sets the current state to be identical to the state that would 472 be created by the corresponding constructor. 473 </p> 474 </td> 475</tr> 476<tr> 477<td> 478 <p> 479 <code class="computeroutput"><span class="identifier">u</span><span class="special">.</span><span class="identifier">discard</span><span class="special">(</span><span class="identifier">j</span><span class="special">)</span></code> 480 </p> 481 </td> 482<td> 483 <p> 484 <code class="computeroutput"><span class="keyword">void</span></code> 485 </p> 486 </td> 487<td> 488 <p> 489 Advances the generator by <code class="computeroutput"><span class="identifier">j</span></code> 490 steps as if by <code class="computeroutput"><span class="identifier">j</span></code> 491 calls to <code class="computeroutput"><span class="identifier">u</span><span class="special">()</span></code>. 492 </p> 493 </td> 494</tr> 495</tbody> 496</table></div> 497</div> 498<br class="table-break"><p> 499 Classes which model a pseudo-random number generator shall also model 500 <a href="../../../doc/html/EqualityComparable.html" target="_top">EqualityComparable</a>, 501 i.e. implement <code class="computeroutput"><span class="keyword">operator</span><span class="special">==</span></code>. 502 Two pseudo-random number generators are defined to be <span class="emphasis"><em>equivalent</em></span> 503 if they both return an identical sequence of numbers starting from a given 504 state. 505 </p> 506<p> 507 Classes which model a pseudo-random number generator shall also model the 508 Streamable concept, i.e. implement <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<</span></code> and <code class="computeroutput"><span class="keyword">operator</span><span class="special">>></span></code>. <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<</span></code> writes all current state of the 509 pseudo-random number generator to the given <code class="computeroutput"><span class="identifier">ostream</span></code> 510 so that <code class="computeroutput"><span class="keyword">operator</span><span class="special">>></span></code> 511 can restore the state at a later time. The state shall be written in a 512 platform-independent manner, but it is assumed that the <code class="computeroutput"><span class="identifier">locales</span></code> 513 used for writing and reading be the same. The pseudo-random number generator 514 with the restored state and the original at the just-written state shall 515 be equivalent. 516 </p> 517<p> 518 Classes which model a pseudo-random number generator should also model 519 the <a href="../../../doc/html/CopyConstructible.html" target="_top">CopyConstructible</a> 520 and <a href="../../../doc/html/Assignable.html" target="_top">Assignable</a> concepts. 521 However, note that the sequences of the original and the copy are strongly 522 correlated (in fact, they are identical), which may make them unsuitable 523 for some problem domains. Thus, copying pseudo-random number generators 524 is discouraged; they should always be passed by (non-const) reference. 525 </p> 526<p> 527 The classes <code class="computeroutput"><a class="link" href="../boost/random/rand48.html" title="Class rand48">rand48</a></code>, 528 <code class="computeroutput"><a class="link" href="../boost/random/minstd_rand.html" title="Type definition minstd_rand">minstd_rand</a></code>, and 529 <code class="computeroutput"><a class="link" href="../boost/random/mt19937.html" title="Type definition mt19937">mt19937</a></code> are models 530 for a pseudo-random number generator. 531 </p> 532<div class="note"><table border="0" summary="Note"> 533<tr> 534<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td> 535<th align="left">Note</th> 536</tr> 537<tr><td align="left" valign="top"><p> 538 This type of random-number generator is useful for numerics, games and 539 testing. The non-zero arguments constructor(s) and the <code class="computeroutput"><span class="identifier">seed</span><span class="special">()</span></code> 540 member function(s) allow for a user-provided state to be installed in 541 the generator. This is useful for debugging Monte-Carlo algorithms and 542 analyzing particular test scenarios. The Streamable concept allows to 543 save/restore the state of the generator, for example to re-run a test 544 suite at a later time. 545 </p></td></tr> 546</table></div> 547</div> 548<div class="section"> 549<div class="titlepage"><div><div><h4 class="title"> 550<a name="boost_random.reference.concepts.quasi_random_number_generator"></a><a class="link" href="reference.html#boost_random.reference.concepts.quasi_random_number_generator" title="Quasi-Random Number Generator">Quasi-Random 551 Number Generator</a> 552</h4></div></div></div> 553<p> 554 A quasi-random number generator is a <a class="link" href="reference.html#boost_random.reference.concepts.uniform_random_number_generator" title="Uniform Random Number Generator">UniformRandomNumberGenerator</a> 555 which provides a deterministic sequence of quasi-random numbers, based 556 on some algorithm and internal state. <code class="computeroutput"><a class="link" href="../boost/random/niederreiter_base2_engine.html" title="Class template niederreiter_base2_engine">Niederreiter 557 base 2</a></code> generator is an example of such a <a class="link" href="reference.html#boost_random.reference.concepts.quasi_random_number_generator" title="Quasi-Random Number Generator">quasi-random 558 number generator</a>. The "quasi" modifier is used to denote 559 more clearly that the values produced by such a generator are neither random 560 nor pseudo-random, but they form a low discrepancy sequence. The intuitive 561 idea is that a low discrepancy sequence is more evenly distributed than 562 a pseudo random sequence would be. For example, if we generate a low discrepancy 563 sequence of 2D points on a square, this square would be covered more evenly, 564 and the number of points falling to any part of the square would be proportional 565 to the number of points in the whole square. Such sequences share some 566 properties of random variables and in certain applications such as the 567 quasi-Monte Carlo method their lower discrepancy is an important advantage. 568 </p> 569<div class="note"><table border="0" summary="Note"> 570<tr> 571<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td> 572<th align="left">Note</th> 573</tr> 574<tr><td align="left" valign="top"><p> 575 The quasi-Monte Carlo method uses a low-discrepancy sequence such as 576 the Niederreiter base 2 sequence, the Sobol sequence, or the Faure sequence 577 among the others. The advantage of using low-discrepancy sequences is 578 a probabilistically faster rate of convergence. Quasi-Monte Carlo has 579 a rate of convergence O(log(N)<sup>s</sup>/N), whereas the rate of convergence for 580 the Monte Carlo method, which uses a pseudo-random sequence, is O(N<sup>-0.5</sup>). 581 </p></td></tr> 582</table></div> 583<p> 584 Harold Niederreiter gives an extensive overview on random number generation 585 and quasi-Monte Carlo methods in his book "Random number generation 586 and quasi-Monte Carlo methods, Society for Industrial and Applied Mathematics, 587 1992". 588 </p> 589<p> 590 In addition to the <a class="link" href="reference.html#boost_random.reference.concepts.uniform_random_number_generator" title="Uniform Random Number Generator">UniformRandomNumberGenerator</a> 591 requirements, a quasi-random number generator has some additional requirements. 592 In the following table, <code class="computeroutput"><span class="identifier">X</span></code> 593 denotes a quasi-random number generator class, <code class="computeroutput"><span class="identifier">u</span></code> 594 is a value of <code class="computeroutput"><span class="identifier">X</span></code>, <code class="computeroutput"><span class="identifier">v</span></code> is a const value of <code class="computeroutput"><span class="identifier">X</span></code>, 595 and <code class="computeroutput"><span class="identifier">j</span></code> a value of type 596 <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">long</span> 597 <span class="keyword">long</span></code>. 598 </p> 599<div class="table"> 600<a name="boost_random.reference.concepts.quasi_random_number_generator.quasirandomnumbergenerator_requirements"></a><p class="title"><b>Table 33.3. QuasiRandomNumberGenerator requirements</b></p> 601<div class="table-contents"><table class="table" summary="QuasiRandomNumberGenerator requirements"> 602<colgroup> 603<col> 604<col> 605<col> 606</colgroup> 607<thead><tr> 608<th> 609 <p> 610 expression 611 </p> 612 </th> 613<th> 614 <p> 615 return type 616 </p> 617 </th> 618<th> 619 <p> 620 pre/post-condition 621 </p> 622 </th> 623</tr></thead> 624<tbody> 625<tr> 626<td> 627 <p> 628 <code class="computeroutput"><span class="identifier">X</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code> 629 </p> 630 </td> 631<td> 632 <p> 633 - 634 </p> 635 </td> 636<td> 637 <p> 638 creates an <code class="computeroutput"><span class="identifier">s</span></code>-dimensional 639 generator with a default seed. Dimension <code class="computeroutput"><span class="identifier">s</span></code> 640 is an integer no less than 1. 641 </p> 642 </td> 643</tr> 644<tr> 645<td> 646 <p> 647 <code class="computeroutput"><span class="identifier">v</span><span class="special">.</span><span class="identifier">dimension</span><span class="special">()</span></code> 648 </p> 649 </td> 650<td> 651 <p> 652 std::size_t 653 </p> 654 </td> 655<td> 656 <p> 657 the dimension of quasi-random domain. 658 </p> 659 </td> 660</tr> 661<tr> 662<td> 663 <p> 664 <code class="computeroutput"><span class="identifier">u</span><span class="special">.</span><span class="identifier">seed</span><span class="special">(</span><span class="identifier">i</span><span class="special">)</span></code> 665 </p> 666 </td> 667<td> 668 <p> 669 <code class="computeroutput"><span class="keyword">void</span></code> 670 </p> 671 </td> 672<td> 673 <p> 674 seeds the generator with the integer <code class="computeroutput"><span class="identifier">i</span></code>. 675 </p> 676 </td> 677</tr> 678<tr> 679<td> 680 <p> 681 <code class="computeroutput"><span class="identifier">u</span><span class="special">.</span><span class="identifier">discard</span><span class="special">(</span><span class="identifier">j</span><span class="special">)</span></code> 682 </p> 683 </td> 684<td> 685 <p> 686 <code class="computeroutput"><span class="keyword">void</span></code> 687 </p> 688 </td> 689<td> 690 <p> 691 Advances the generator by <code class="computeroutput"><span class="identifier">j</span></code> 692 steps as if by <code class="computeroutput"><span class="identifier">j</span></code> 693 calls to <code class="computeroutput"><span class="identifier">u</span><span class="special">()</span></code>. 694 </p> 695 </td> 696</tr> 697</tbody> 698</table></div> 699</div> 700<br class="table-break"><div class="note"><table border="0" summary="Note"> 701<tr> 702<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td> 703<th align="left">Note</th> 704</tr> 705<tr><td align="left" valign="top"><p> 706 The <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code> 707 returns a successive element of an <code class="computeroutput"><span class="identifier">s</span></code>-dimensional 708 (<code class="computeroutput"><span class="identifier">s</span></code> = <code class="computeroutput"><span class="identifier">v</span><span class="special">.</span><span class="identifier">dimension</span><span class="special">()</span></code>) vector at each invocation. When all 709 elements are exhausted, <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code> begins anew with the starting element 710 of a subsequent <code class="computeroutput"><span class="identifier">s</span></code>-dimensional 711 vector. 712 </p></td></tr> 713</table></div> 714<p> 715 Classes which model a quasi-random number generator shall also model <a href="../../../doc/html/EqualityComparable.html" target="_top">EqualityComparable</a>, 716 i.e. implement <code class="computeroutput"><span class="keyword">operator</span><span class="special">==</span></code>. 717 Two quasi-random number generators are defined to be <span class="emphasis"><em>equivalent</em></span> 718 if they both return an identical sequence of numbers starting from a given 719 state. 720 </p> 721<p> 722 Classes which model a quasi-random number generator shall also model the 723 Streamable concept, i.e. implement <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<</span></code> and <code class="computeroutput"><span class="keyword">operator</span><span class="special">>></span></code>. <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<</span></code> writes all current state of the 724 quasi-random number generator to the given <code class="computeroutput"><span class="identifier">ostream</span></code> 725 so that <code class="computeroutput"><span class="keyword">operator</span><span class="special">>></span></code> 726 can restore the state at a later time. The state shall be written in a 727 platform-independent manner, but it is assumed that the <code class="computeroutput"><span class="identifier">locales</span></code> 728 used for writing and reading be the same. The quasi-random number generator 729 with the restored state and the original at the just-written state shall 730 be equivalent. 731 </p> 732<p> 733 Classes which model a quasi-random number generator should also model the 734 <a href="../../../doc/html/CopyConstructible.html" target="_top">CopyConstructible</a> 735 and <a href="../../../doc/html/Assignable.html" target="_top">Assignable</a> concepts. 736 However, note that the sequences of the original and the copy are strongly 737 correlated (in fact, they are identical), which may make them unsuitable 738 for some problem domains. Thus, copying quasi-random number generators 739 is discouraged; they should always be passed by (non-const) reference. 740 </p> 741<p> 742 The classes <code class="computeroutput"><a class="link" href="../boost/random/niederreiter_base2.html" title="Type definition niederreiter_base2">niederreiter_base2</a></code>, 743 <code class="computeroutput"><a class="link" href="../boost/random/sobol.html" title="Type definition sobol">sobol</a></code>, <code class="computeroutput"><a class="link" href="../boost/random/faure.html" title="Type definition faure">faure</a></code> 744 are models for a quasi-random number generator. 745 </p> 746</div> 747<div class="section"> 748<div class="titlepage"><div><div><h4 class="title"> 749<a name="boost_random.reference.concepts.seed_sequence"></a><a class="link" href="reference.html#boost_random.reference.concepts.seed_sequence" title="Seed Sequence">Seed 750 Sequence</a> 751</h4></div></div></div> 752<p> 753 A SeedSeq represents a sequence of values that can be used to set the initial 754 state of a <a class="link" href="reference.html#boost_random.reference.concepts.pseudo_random_number_generator" title="Pseudo-Random Number Generator">PseudoRandomNumberGenerator</a>. 755 <code class="computeroutput"><span class="identifier">i</span></code> and <code class="computeroutput"><span class="identifier">j</span></code> 756 are RandomAccessIterators whose <code class="computeroutput"><span class="identifier">value_type</span></code> 757 is an unsigned integer type with at least 32 bits. 758 </p> 759<div class="table"> 760<a name="boost_random.reference.concepts.seed_sequence.seedseq_requirements"></a><p class="title"><b>Table 33.4. SeedSeq requirements</b></p> 761<div class="table-contents"><table class="table" summary="SeedSeq requirements"> 762<colgroup> 763<col> 764<col> 765<col> 766<col> 767</colgroup> 768<thead><tr> 769<th> 770 <p> 771 expression 772 </p> 773 </th> 774<th> 775 <p> 776 return type 777 </p> 778 </th> 779<th> 780 <p> 781 pre/post-condition 782 </p> 783 </th> 784<th> 785 <p> 786 complexity 787 </p> 788 </th> 789</tr></thead> 790<tbody><tr> 791<td> 792 <p> 793 <code class="computeroutput"><span class="identifier">s</span><span class="special">.</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">i</span><span class="special">,</span> 794 <span class="identifier">j</span><span class="special">)</span></code> 795 </p> 796 </td> 797<td> 798 <p> 799 void 800 </p> 801 </td> 802<td> 803 <p> 804 stores 32-bit values to all the elements in the iterator range 805 defined by <code class="computeroutput"><span class="identifier">i</span></code> 806 and <code class="computeroutput"><span class="identifier">j</span></code> 807 </p> 808 </td> 809<td> 810 <p> 811 O(j - i) 812 </p> 813 </td> 814</tr></tbody> 815</table></div> 816</div> 817<br class="table-break"><p> 818 The class <code class="computeroutput"><a class="link" href="../boost/random/seed_seq.html" title="Class seed_seq">seed_seq</a></code> 819 and every <a class="link" href="reference.html#boost_random.reference.concepts.uniform_random_number_generator" title="Uniform Random Number Generator">UniformRandomNumberGenerator</a> 820 provided by the library are models of <a class="link" href="reference.html#boost_random.reference.concepts.seed_sequence" title="Seed Sequence">SeedSeq</a>. 821 </p> 822</div> 823<div class="section"> 824<div class="titlepage"><div><div><h4 class="title"> 825<a name="boost_random.reference.concepts.random_distribution"></a><a class="link" href="reference.html#boost_random.reference.concepts.random_distribution" title="Random Distribution">Random 826 Distribution</a> 827</h4></div></div></div> 828<p> 829 A random distribution produces random numbers distributed according to 830 some distribution, given uniformly distributed random values as input. 831 In the following table, <code class="computeroutput"><span class="identifier">X</span></code> 832 denotes a random distribution class returning objects of type <code class="computeroutput"><span class="identifier">T</span></code>, <code class="computeroutput"><span class="identifier">u</span></code> 833 is a value of <code class="computeroutput"><span class="identifier">X</span></code>, <code class="computeroutput"><span class="identifier">x</span></code> and <code class="computeroutput"><span class="identifier">y</span></code> 834 are (possibly const) values of <code class="computeroutput"><span class="identifier">X</span></code>, 835 <code class="computeroutput"><span class="identifier">P</span></code> is the <code class="computeroutput"><span class="identifier">param_type</span></code> of the distribution, <code class="computeroutput"><span class="identifier">p</span></code> is a value of <code class="computeroutput"><span class="identifier">P</span></code>, 836 and <code class="computeroutput"><span class="identifier">e</span></code> is an lvalue of an 837 arbitrary type that meets the requirements of a <a class="link" href="reference.html#boost_random.reference.concepts.uniform_random_number_generator" title="Uniform Random Number Generator">UniformRandomNumberGenerator</a>, 838 returning values of type <code class="computeroutput"><span class="identifier">U</span></code>. 839 </p> 840<div class="table"> 841<a name="boost_random.reference.concepts.random_distribution.random_distribution_requirements__in_addition_to_copyconstructible__and_assignable_"></a><p class="title"><b>Table 33.5. Random distribution requirements (in addition to CopyConstructible, 842 and Assignable)</b></p> 843<div class="table-contents"><table class="table" summary="Random distribution requirements (in addition to CopyConstructible, 844 and Assignable)"> 845<colgroup> 846<col> 847<col> 848<col> 849<col> 850</colgroup> 851<thead><tr> 852<th> 853 <p> 854 expression 855 </p> 856 </th> 857<th> 858 <p> 859 return type 860 </p> 861 </th> 862<th> 863 <p> 864 pre/post-condition 865 </p> 866 </th> 867<th> 868 <p> 869 complexity 870 </p> 871 </th> 872</tr></thead> 873<tbody> 874<tr> 875<td> 876 <p> 877 <code class="computeroutput"><span class="identifier">X</span><span class="special">::</span><span class="identifier">result_type</span></code> 878 </p> 879 </td> 880<td> 881 <p> 882 <code class="computeroutput"><span class="identifier">T</span></code> 883 </p> 884 </td> 885<td> 886 <p> 887 - 888 </p> 889 </td> 890<td> 891 <p> 892 compile-time 893 </p> 894 </td> 895</tr> 896<tr> 897<td> 898 <p> 899 <code class="computeroutput"><span class="identifier">X</span><span class="special">::</span><span class="identifier">param_type</span></code> 900 </p> 901 </td> 902<td> 903 <p> 904 <code class="computeroutput"><span class="identifier">P</span></code> 905 </p> 906 </td> 907<td> 908 <p> 909 A type that stores the parameters of the distribution, but not 910 any of the state used to generate random variates. <code class="computeroutput"><span class="identifier">param_type</span></code> provides the same 911 set of constructors and accessors as the distribution. 912 </p> 913 </td> 914<td> 915 <p> 916 compile-time 917 </p> 918 </td> 919</tr> 920<tr> 921<td> 922 <p> 923 <code class="computeroutput"><span class="identifier">X</span><span class="special">(</span><span class="identifier">p</span><span class="special">)</span></code> 924 </p> 925 </td> 926<td> 927 <p> 928 <code class="computeroutput"><span class="identifier">X</span></code> 929 </p> 930 </td> 931<td> 932 <p> 933 Initializes a distribution from its parameters 934 </p> 935 </td> 936<td> 937 <p> 938 O(size of state) 939 </p> 940 </td> 941</tr> 942<tr> 943<td> 944 <p> 945 <code class="computeroutput"><span class="identifier">u</span><span class="special">.</span><span class="identifier">reset</span><span class="special">()</span></code> 946 </p> 947 </td> 948<td> 949 <p> 950 <code class="computeroutput"><span class="keyword">void</span></code> 951 </p> 952 </td> 953<td> 954 <p> 955 subsequent uses of <code class="computeroutput"><span class="identifier">u</span></code> 956 do not depend on values produced by any engine prior to invoking 957 <code class="computeroutput"><span class="identifier">reset</span></code>. 958 </p> 959 </td> 960<td> 961 <p> 962 constant 963 </p> 964 </td> 965</tr> 966<tr> 967<td> 968 <p> 969 <code class="computeroutput"><span class="identifier">u</span><span class="special">(</span><span class="identifier">e</span><span class="special">)</span></code> 970 </p> 971 </td> 972<td> 973 <p> 974 <code class="computeroutput"><span class="identifier">T</span></code> 975 </p> 976 </td> 977<td> 978 <p> 979 the sequence of numbers returned by successive invocations with 980 the same object <code class="computeroutput"><span class="identifier">e</span></code> 981 is randomly distributed with the probability density function 982 of the distribution 983 </p> 984 </td> 985<td> 986 <p> 987 amortized constant number of invocations of <code class="computeroutput"><span class="identifier">e</span></code> 988 </p> 989 </td> 990</tr> 991<tr> 992<td> 993 <p> 994 <code class="computeroutput"><span class="identifier">u</span><span class="special">(</span><span class="identifier">e</span><span class="special">,</span> 995 <span class="identifier">p</span><span class="special">)</span></code> 996 </p> 997 </td> 998<td> 999 <p> 1000 <code class="computeroutput"><span class="identifier">T</span></code> 1001 </p> 1002 </td> 1003<td> 1004 <p> 1005 Equivalent to X(p)(e), but may use a different (and presumably 1006 more efficient) implementation 1007 </p> 1008 </td> 1009<td> 1010 <p> 1011 amortized constant number of invocations of <code class="computeroutput"><span class="identifier">e</span></code> 1012 + O(size of state) 1013 </p> 1014 </td> 1015</tr> 1016<tr> 1017<td> 1018 <p> 1019 <code class="computeroutput"><span class="identifier">x</span><span class="special">.</span><span class="identifier">param</span><span class="special">()</span></code> 1020 </p> 1021 </td> 1022<td> 1023 <p> 1024 <code class="computeroutput"><span class="identifier">P</span></code> 1025 </p> 1026 </td> 1027<td> 1028 <p> 1029 Returns the parameters of the distribution 1030 </p> 1031 </td> 1032<td> 1033 <p> 1034 O(size of state) 1035 </p> 1036 </td> 1037</tr> 1038<tr> 1039<td> 1040 <p> 1041 <code class="computeroutput"><span class="identifier">x</span><span class="special">.</span><span class="identifier">param</span><span class="special">(</span><span class="identifier">p</span><span class="special">)</span></code> 1042 </p> 1043 </td> 1044<td> 1045 <p> 1046 void 1047 </p> 1048 </td> 1049<td> 1050 <p> 1051 Sets the parameters of the distribution 1052 </p> 1053 </td> 1054<td> 1055 <p> 1056 O(size of state) 1057 </p> 1058 </td> 1059</tr> 1060<tr> 1061<td> 1062 <p> 1063 <code class="computeroutput"><span class="identifier">x</span><span class="special">.</span><span class="identifier">min</span><span class="special">()</span></code> 1064 </p> 1065 </td> 1066<td> 1067 <p> 1068 <code class="computeroutput"><span class="identifier">T</span></code> 1069 </p> 1070 </td> 1071<td> 1072 <p> 1073 returns the minimum value of the distribution 1074 </p> 1075 </td> 1076<td> 1077 <p> 1078 constant 1079 </p> 1080 </td> 1081</tr> 1082<tr> 1083<td> 1084 <p> 1085 <code class="computeroutput"><span class="identifier">x</span><span class="special">.</span><span class="identifier">max</span><span class="special">()</span></code> 1086 </p> 1087 </td> 1088<td> 1089 <p> 1090 <code class="computeroutput"><span class="identifier">T</span></code> 1091 </p> 1092 </td> 1093<td> 1094 <p> 1095 returns the maximum value of the distribution 1096 </p> 1097 </td> 1098<td> 1099 <p> 1100 constant 1101 </p> 1102 </td> 1103</tr> 1104<tr> 1105<td> 1106 <p> 1107 <code class="computeroutput"><span class="identifier">x</span> <span class="special">==</span> 1108 <span class="identifier">y</span></code> 1109 </p> 1110 </td> 1111<td> 1112 <p> 1113 <code class="computeroutput"><span class="keyword">bool</span></code> 1114 </p> 1115 </td> 1116<td> 1117 <p> 1118 Indicates whether the two distributions will produce identical 1119 sequences of random variates if given equal generators 1120 </p> 1121 </td> 1122<td> 1123 <p> 1124 O(size of state) 1125 </p> 1126 </td> 1127</tr> 1128<tr> 1129<td> 1130 <p> 1131 <code class="computeroutput"><span class="identifier">x</span> <span class="special">!=</span> 1132 <span class="identifier">y</span></code> 1133 </p> 1134 </td> 1135<td> 1136 <p> 1137 <code class="computeroutput"><span class="keyword">bool</span></code> 1138 </p> 1139 </td> 1140<td> 1141 <p> 1142 <code class="computeroutput"><span class="special">!(</span><span class="identifier">x</span> 1143 <span class="special">==</span> <span class="identifier">y</span><span class="special">)</span></code> 1144 </p> 1145 </td> 1146<td> 1147 <p> 1148 O(size of state) 1149 </p> 1150 </td> 1151</tr> 1152<tr> 1153<td> 1154 <p> 1155 <code class="computeroutput"><span class="identifier">os</span> <span class="special"><<</span> 1156 <span class="identifier">x</span></code> 1157 </p> 1158 </td> 1159<td> 1160 <p> 1161 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span></code> 1162 </p> 1163 </td> 1164<td> 1165 <p> 1166 writes a textual representation for the parameters and additional 1167 internal data of the distribution <code class="computeroutput"><span class="identifier">x</span></code> 1168 to <code class="computeroutput"><span class="identifier">os</span></code>. post: 1169 The <code class="computeroutput"><span class="identifier">os</span><span class="special">.</span><span class="identifier">fmtflags</span></code> and fill character 1170 are unchanged. 1171 </p> 1172 </td> 1173<td> 1174 <p> 1175 O(size of state) 1176 </p> 1177 </td> 1178</tr> 1179<tr> 1180<td> 1181 <p> 1182 <code class="computeroutput"><span class="identifier">is</span> <span class="special">>></span> 1183 <span class="identifier">u</span></code> 1184 </p> 1185 </td> 1186<td> 1187 <p> 1188 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&</span></code> 1189 </p> 1190 </td> 1191<td> 1192 <p> 1193 restores the parameters and additional internal data of the distribution 1194 <code class="computeroutput"><span class="identifier">u</span></code>. pre: <code class="computeroutput"><span class="identifier">is</span></code> provides a textual representation 1195 that was previously written by <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<</span></code> post: The <code class="computeroutput"><span class="identifier">is</span><span class="special">.</span><span class="identifier">fmtflags</span></code> are unchanged. 1196 </p> 1197 </td> 1198<td> 1199 <p> 1200 O(size of state) 1201 </p> 1202 </td> 1203</tr> 1204</tbody> 1205</table></div> 1206</div> 1207<br class="table-break"><p> 1208 Additional requirements: The sequence of numbers produced by repeated invocations 1209 of <code class="computeroutput"><span class="identifier">x</span><span class="special">(</span><span class="identifier">e</span><span class="special">)</span></code> does 1210 not change whether or not <code class="computeroutput"><span class="identifier">os</span> 1211 <span class="special"><<</span> <span class="identifier">x</span></code> 1212 is invoked between any of the invocations <code class="computeroutput"><span class="identifier">x</span><span class="special">(</span><span class="identifier">e</span><span class="special">)</span></code>. 1213 If a textual representation is written using <code class="computeroutput"><span class="identifier">os</span> 1214 <span class="special"><<</span> <span class="identifier">x</span></code> 1215 and that representation is restored into the same or a different object 1216 <code class="computeroutput"><span class="identifier">y</span></code> of the same type using 1217 <code class="computeroutput"><span class="identifier">is</span> <span class="special">>></span> 1218 <span class="identifier">y</span></code>, repeated invocations of <code class="computeroutput"><span class="identifier">y</span><span class="special">(</span><span class="identifier">e</span><span class="special">)</span></code> produce the same sequence of random numbers 1219 as would repeated invocations of <code class="computeroutput"><span class="identifier">x</span><span class="special">(</span><span class="identifier">e</span><span class="special">)</span></code>. 1220 </p> 1221</div> 1222</div> 1223<div class="section"> 1224<div class="titlepage"><div><div><h3 class="title"> 1225<a name="boost_random.reference.generators"></a><a class="link" href="reference.html#boost_random.reference.generators" title="Generators">Generators</a> 1226</h3></div></div></div> 1227<p> 1228 This library provides several <a class="link" href="reference.html#boost_random.reference.concepts.pseudo_random_number_generator" title="Pseudo-Random Number Generator">pseudo-random 1229 number generators</a>. The quality of a <a class="link" href="reference.html#boost_random.reference.concepts.pseudo_random_number_generator" title="Pseudo-Random Number Generator">pseudo 1230 random number generator</a> crucially depends on both the algorithm and 1231 its parameters. This library implements the algorithms as class templates 1232 with template value parameters, hidden in <code class="computeroutput"><span class="keyword">namespace</span> 1233 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">random</span></code>. Any particular choice of parameters 1234 is represented as the appropriately specializing <code class="computeroutput"><span class="keyword">typedef</span></code> 1235 in <code class="computeroutput"><span class="keyword">namespace</span> <span class="identifier">boost</span></code>. 1236 </p> 1237<p> 1238 <a class="link" href="reference.html#boost_random.reference.concepts.pseudo_random_number_generator" title="Pseudo-Random Number Generator">Pseudo-random 1239 number generators</a> should not be constructed (initialized) frequently 1240 during program execution, for two reasons. First, initialization requires 1241 full initialization of the internal state of the generator. Thus, generators 1242 with a lot of internal state (see below) are costly to initialize. Second, 1243 initialization always requires some value used as a "seed" for 1244 the generated sequence. It is usually difficult to obtain several good seed 1245 values. For example, one method to obtain a seed is to determine the current 1246 time at the highest resolution available, e.g. microseconds or nanoseconds. 1247 When the <a class="link" href="reference.html#boost_random.reference.concepts.pseudo_random_number_generator" title="Pseudo-Random Number Generator">pseudo-random 1248 number generator</a> is initialized again with the then-current time as 1249 the seed, it is likely that this is at a near-constant (non-random) distance 1250 from the time given as the seed for first initialization. The distance could 1251 even be zero if the resolution of the clock is low, thus the generator re-iterates 1252 the same sequence of random numbers. For some applications, this is inappropriate. 1253 </p> 1254<p> 1255 Note that all <a class="link" href="reference.html#boost_random.reference.concepts.pseudo_random_number_generator" title="Pseudo-Random Number Generator">pseudo-random 1256 number generators</a> described below are <a href="../../../doc/html/CopyConstructible.html" target="_top">CopyConstructible</a> 1257 and <a href="../../../doc/html/Assignable.html" target="_top">Assignable</a>. Copying 1258 or assigning a generator will copy all its internal state, so the original 1259 and the copy will generate the identical sequence of random numbers. Often, 1260 such behavior is not wanted. In particular, beware of the algorithms from 1261 the standard library such as <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">generate</span></code>. 1262 They take a functor argument by value, thereby invoking the copy constructor 1263 when called. 1264 </p> 1265<p> 1266 The following table gives an overview of some characteristics of the generators. 1267 The cycle length is a rough estimate of the quality of the generator; the 1268 approximate relative speed is a performance measure, higher numbers mean 1269 faster random number generation. 1270 </p> 1271<div class="table"> 1272<a name="boost_random.reference.generators.generators"></a><p class="title"><b>Table 33.6. generators</b></p> 1273<div class="table-contents"><table class="table" summary="generators"> 1274<colgroup> 1275<col> 1276<col> 1277<col> 1278<col> 1279<col> 1280</colgroup> 1281<thead><tr> 1282<th> 1283 <p> 1284 generator 1285 </p> 1286 </th> 1287<th> 1288 <p> 1289 length of cycle 1290 </p> 1291 </th> 1292<th> 1293 <p> 1294 approx. memory requirements 1295 </p> 1296 </th> 1297<th> 1298 <p> 1299 approx. speed compared to fastest 1300 </p> 1301 </th> 1302<th> 1303 <p> 1304 comment 1305 </p> 1306 </th> 1307</tr></thead> 1308<tbody> 1309<tr> 1310<td> 1311 <p> 1312 <code class="computeroutput"><a class="link" href="../boost/random/minstd_rand0.html" title="Type definition minstd_rand0">minstd_rand0</a></code> 1313 </p> 1314 </td> 1315<td> 1316 <p> 1317 2<sup>31</sup>-2 1318 </p> 1319 </td> 1320<td> 1321 <p> 1322 <code class="computeroutput"><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">int32_t</span><span class="special">)</span></code> 1323 </p> 1324 </td> 1325<td> 1326 <p> 1327 16% 1328 </p> 1329 </td> 1330<td> 1331 <p> 1332 - 1333 </p> 1334 </td> 1335</tr> 1336<tr> 1337<td> 1338 <p> 1339 <code class="computeroutput"><a class="link" href="../boost/random/minstd_rand.html" title="Type definition minstd_rand">minstd_rand</a></code> 1340 </p> 1341 </td> 1342<td> 1343 <p> 1344 2<sup>31</sup>-2 1345 </p> 1346 </td> 1347<td> 1348 <p> 1349 <code class="computeroutput"><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">int32_t</span><span class="special">)</span></code> 1350 </p> 1351 </td> 1352<td> 1353 <p> 1354 16% 1355 </p> 1356 </td> 1357<td> 1358 <p> 1359 - 1360 </p> 1361 </td> 1362</tr> 1363<tr> 1364<td> 1365 <p> 1366 <code class="computeroutput"><a class="link" href="../boost/random/rand48.html" title="Class rand48">rand48</a></code> 1367 </p> 1368 </td> 1369<td> 1370 <p> 1371 2<sup>48</sup>-1 1372 </p> 1373 </td> 1374<td> 1375 <p> 1376 <code class="computeroutput"><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">uint64_t</span><span class="special">)</span></code> 1377 </p> 1378 </td> 1379<td> 1380 <p> 1381 64% 1382 </p> 1383 </td> 1384<td> 1385 <p> 1386 - 1387 </p> 1388 </td> 1389</tr> 1390<tr> 1391<td> 1392 <p> 1393 <code class="computeroutput"><a class="link" href="../boost/random/ecuyer1988.html" title="Type definition ecuyer1988">ecuyer1988</a></code> 1394 </p> 1395 </td> 1396<td> 1397 <p> 1398 approx. 2<sup>61</sup> 1399 </p> 1400 </td> 1401<td> 1402 <p> 1403 <code class="computeroutput"><span class="number">2</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">int32_t</span><span class="special">)</span></code> 1404 </p> 1405 </td> 1406<td> 1407 <p> 1408 7% 1409 </p> 1410 </td> 1411<td> 1412 <p> 1413 - 1414 </p> 1415 </td> 1416</tr> 1417<tr> 1418<td> 1419 <p> 1420 <code class="computeroutput"><a class="link" href="../boost/random/knuth_b.html" title="Type definition knuth_b">knuth_b</a></code> 1421 </p> 1422 </td> 1423<td> 1424 <p> 1425 ? 1426 </p> 1427 </td> 1428<td> 1429 <p> 1430 <code class="computeroutput"><span class="number">257</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">uint32_t</span><span class="special">)</span></code> 1431 </p> 1432 </td> 1433<td> 1434 <p> 1435 12% 1436 </p> 1437 </td> 1438<td> 1439 <p> 1440 - 1441 </p> 1442 </td> 1443</tr> 1444<tr> 1445<td> 1446 <p> 1447 <code class="computeroutput"><a class="link" href="../boost/random/kreutzer1986.html" title="Type definition kreutzer1986">kreutzer1986</a></code> 1448 </p> 1449 </td> 1450<td> 1451 <p> 1452 ? 1453 </p> 1454 </td> 1455<td> 1456 <p> 1457 <code class="computeroutput"><span class="number">98</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">uint32_t</span><span class="special">)</span></code> 1458 </p> 1459 </td> 1460<td> 1461 <p> 1462 37% 1463 </p> 1464 </td> 1465<td> 1466 <p> 1467 - 1468 </p> 1469 </td> 1470</tr> 1471<tr> 1472<td> 1473 <p> 1474 <code class="computeroutput"><a class="link" href="../boost/random/taus88.html" title="Type definition taus88">taus88</a></code> 1475 </p> 1476 </td> 1477<td> 1478 <p> 1479 ~2<sup>88</sup> 1480 </p> 1481 </td> 1482<td> 1483 <p> 1484 <code class="computeroutput"><span class="number">3</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">uint32_t</span><span class="special">)</span></code> 1485 </p> 1486 </td> 1487<td> 1488 <p> 1489 100% 1490 </p> 1491 </td> 1492<td> 1493 <p> 1494 - 1495 </p> 1496 </td> 1497</tr> 1498<tr> 1499<td> 1500 <p> 1501 <code class="computeroutput"><a class="link" href="../boost/random/hellekalek1995.html" title="Type definition hellekalek1995">hellekalek1995</a></code> 1502 </p> 1503 </td> 1504<td> 1505 <p> 1506 2<sup>31</sup>-1 1507 </p> 1508 </td> 1509<td> 1510 <p> 1511 <code class="computeroutput"><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">int32_t</span><span class="special">)</span></code> 1512 </p> 1513 </td> 1514<td> 1515 <p> 1516 2% 1517 </p> 1518 </td> 1519<td> 1520 <p> 1521 good uniform distribution in several dimensions 1522 </p> 1523 </td> 1524</tr> 1525<tr> 1526<td> 1527 <p> 1528 <code class="computeroutput"><a class="link" href="../boost/random/mt11213b.html" title="Type definition mt11213b">mt11213b</a></code> 1529 </p> 1530 </td> 1531<td> 1532 <p> 1533 2<sup>11213</sup>-1 1534 </p> 1535 </td> 1536<td> 1537 <p> 1538 <code class="computeroutput"><span class="number">352</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">uint32_t</span><span class="special">)</span></code> 1539 </p> 1540 </td> 1541<td> 1542 <p> 1543 100% 1544 </p> 1545 </td> 1546<td> 1547 <p> 1548 good uniform distribution in up to 350 dimensions 1549 </p> 1550 </td> 1551</tr> 1552<tr> 1553<td> 1554 <p> 1555 <code class="computeroutput"><a class="link" href="../boost/random/mt19937.html" title="Type definition mt19937">mt19937</a></code> 1556 </p> 1557 </td> 1558<td> 1559 <p> 1560 2<sup>19937</sup>-1 1561 </p> 1562 </td> 1563<td> 1564 <p> 1565 <code class="computeroutput"><span class="number">625</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">uint32_t</span><span class="special">)</span></code> 1566 </p> 1567 </td> 1568<td> 1569 <p> 1570 93% 1571 </p> 1572 </td> 1573<td> 1574 <p> 1575 good uniform distribution in up to 623 dimensions 1576 </p> 1577 </td> 1578</tr> 1579<tr> 1580<td> 1581 <p> 1582 <code class="computeroutput"><a class="link" href="reference.html#boost.random.mt19937_64">mt19937_64</a></code> 1583 </p> 1584 </td> 1585<td> 1586 <p> 1587 2<sup>19937</sup>-1 1588 </p> 1589 </td> 1590<td> 1591 <p> 1592 <code class="computeroutput"><span class="number">312</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">uint64_t</span><span class="special">)</span></code> 1593 </p> 1594 </td> 1595<td> 1596 <p> 1597 38% 1598 </p> 1599 </td> 1600<td> 1601 <p> 1602 good uniform distribution in up to 311 dimensions 1603 </p> 1604 </td> 1605</tr> 1606<tr> 1607<td> 1608 <p> 1609 <code class="computeroutput"><a class="link" href="../boost/random/lagged_fibonacci607.html" title="Type definition lagged_fibonacci607">lagged_fibonacci607</a></code> 1610 </p> 1611 </td> 1612<td> 1613 <p> 1614 ~2<sup>32000</sup> 1615 </p> 1616 </td> 1617<td> 1618 <p> 1619 <code class="computeroutput"><span class="number">607</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">double</span><span class="special">)</span></code> 1620 </p> 1621 </td> 1622<td> 1623 <p> 1624 59% 1625 </p> 1626 </td> 1627<td> 1628 <p> 1629 - 1630 </p> 1631 </td> 1632</tr> 1633<tr> 1634<td> 1635 <p> 1636 <code class="computeroutput"><a class="link" href="../boost/random/lagged_fibonacci1279.html" title="Type definition lagged_fibonacci1279">lagged_fibonacci1279</a></code> 1637 </p> 1638 </td> 1639<td> 1640 <p> 1641 ~2<sup>67000</sup> 1642 </p> 1643 </td> 1644<td> 1645 <p> 1646 <code class="computeroutput"><span class="number">1279</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">double</span><span class="special">)</span></code> 1647 </p> 1648 </td> 1649<td> 1650 <p> 1651 59% 1652 </p> 1653 </td> 1654<td> 1655 <p> 1656 - 1657 </p> 1658 </td> 1659</tr> 1660<tr> 1661<td> 1662 <p> 1663 <code class="computeroutput"><a class="link" href="../boost/random/lagged_fibonacci2281.html" title="Type definition lagged_fibonacci2281">lagged_fibonacci2281</a></code> 1664 </p> 1665 </td> 1666<td> 1667 <p> 1668 ~2<sup>120000</sup> 1669 </p> 1670 </td> 1671<td> 1672 <p> 1673 <code class="computeroutput"><span class="number">2281</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">double</span><span class="special">)</span></code> 1674 </p> 1675 </td> 1676<td> 1677 <p> 1678 61% 1679 </p> 1680 </td> 1681<td> 1682 <p> 1683 - 1684 </p> 1685 </td> 1686</tr> 1687<tr> 1688<td> 1689 <p> 1690 <code class="computeroutput"><a class="link" href="../boost/random/lagged_fibonacci3217.html" title="Type definition lagged_fibonacci3217">lagged_fibonacci3217</a></code> 1691 </p> 1692 </td> 1693<td> 1694 <p> 1695 ~2<sup>170000</sup> 1696 </p> 1697 </td> 1698<td> 1699 <p> 1700 <code class="computeroutput"><span class="number">3217</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">double</span><span class="special">)</span></code> 1701 </p> 1702 </td> 1703<td> 1704 <p> 1705 62% 1706 </p> 1707 </td> 1708<td> 1709 <p> 1710 - 1711 </p> 1712 </td> 1713</tr> 1714<tr> 1715<td> 1716 <p> 1717 <code class="computeroutput"><a class="link" href="../boost/random/lagged_fibonacci4423.html" title="Type definition lagged_fibonacci4423">lagged_fibonacci4423</a></code> 1718 </p> 1719 </td> 1720<td> 1721 <p> 1722 ~2<sup>230000</sup> 1723 </p> 1724 </td> 1725<td> 1726 <p> 1727 <code class="computeroutput"><span class="number">4423</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">double</span><span class="special">)</span></code> 1728 </p> 1729 </td> 1730<td> 1731 <p> 1732 59% 1733 </p> 1734 </td> 1735<td> 1736 <p> 1737 - 1738 </p> 1739 </td> 1740</tr> 1741<tr> 1742<td> 1743 <p> 1744 <code class="computeroutput"><a class="link" href="../boost/random/lagged_fibonacci9689.html" title="Type definition lagged_fibonacci9689">lagged_fibonacci9689</a></code> 1745 </p> 1746 </td> 1747<td> 1748 <p> 1749 ~2<sup>510000</sup> 1750 </p> 1751 </td> 1752<td> 1753 <p> 1754 <code class="computeroutput"><span class="number">9689</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">double</span><span class="special">)</span></code> 1755 </p> 1756 </td> 1757<td> 1758 <p> 1759 61% 1760 </p> 1761 </td> 1762<td> 1763 <p> 1764 - 1765 </p> 1766 </td> 1767</tr> 1768<tr> 1769<td> 1770 <p> 1771 <code class="computeroutput"><a class="link" href="../boost/random/lagged_fibonacci19937.html" title="Type definition lagged_fibonacci19937">lagged_fibonacci19937</a></code> 1772 </p> 1773 </td> 1774<td> 1775 <p> 1776 ~2<sup>1050000</sup> 1777 </p> 1778 </td> 1779<td> 1780 <p> 1781 <code class="computeroutput"><span class="number">19937</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">double</span><span class="special">)</span></code> 1782 </p> 1783 </td> 1784<td> 1785 <p> 1786 59% 1787 </p> 1788 </td> 1789<td> 1790 <p> 1791 - 1792 </p> 1793 </td> 1794</tr> 1795<tr> 1796<td> 1797 <p> 1798 <code class="computeroutput"><a class="link" href="../boost/random/lagged_fibonacci23209.html" title="Type definition lagged_fibonacci23209">lagged_fibonacci23209</a></code> 1799 </p> 1800 </td> 1801<td> 1802 <p> 1803 ~2<sup>1200000</sup> 1804 </p> 1805 </td> 1806<td> 1807 <p> 1808 <code class="computeroutput"><span class="number">23209</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">double</span><span class="special">)</span></code> 1809 </p> 1810 </td> 1811<td> 1812 <p> 1813 61% 1814 </p> 1815 </td> 1816<td> 1817 <p> 1818 - 1819 </p> 1820 </td> 1821</tr> 1822<tr> 1823<td> 1824 <p> 1825 <code class="computeroutput"><a class="link" href="../boost/random/lagged_fibonacci44497.html" title="Type definition lagged_fibonacci44497">lagged_fibonacci44497</a></code> 1826 </p> 1827 </td> 1828<td> 1829 <p> 1830 ~2<sup>2300000</sup> 1831 </p> 1832 </td> 1833<td> 1834 <p> 1835 <code class="computeroutput"><span class="number">44497</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">double</span><span class="special">)</span></code> 1836 </p> 1837 </td> 1838<td> 1839 <p> 1840 59% 1841 </p> 1842 </td> 1843<td> 1844 <p> 1845 - 1846 </p> 1847 </td> 1848</tr> 1849<tr> 1850<td> 1851 <p> 1852 <code class="computeroutput"><a class="link" href="../boost/random/ranlux3.html" title="Type definition ranlux3">ranlux3</a></code> 1853 </p> 1854 </td> 1855<td> 1856 <p> 1857 ~10<sup>171</sup> 1858 </p> 1859 </td> 1860<td> 1861 <p> 1862 <code class="computeroutput"><span class="number">24</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">int</span><span class="special">)</span></code> 1863 </p> 1864 </td> 1865<td> 1866 <p> 1867 5% 1868 </p> 1869 </td> 1870<td> 1871 <p> 1872 - 1873 </p> 1874 </td> 1875</tr> 1876<tr> 1877<td> 1878 <p> 1879 <code class="computeroutput"><a class="link" href="../boost/random/ranlux4.html" title="Type definition ranlux4">ranlux4</a></code> 1880 </p> 1881 </td> 1882<td> 1883 <p> 1884 ~10<sup>171</sup> 1885 </p> 1886 </td> 1887<td> 1888 <p> 1889 <code class="computeroutput"><span class="number">24</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">int</span><span class="special">)</span></code> 1890 </p> 1891 </td> 1892<td> 1893 <p> 1894 3% 1895 </p> 1896 </td> 1897<td> 1898 <p> 1899 - 1900 </p> 1901 </td> 1902</tr> 1903<tr> 1904<td> 1905 <p> 1906 <code class="computeroutput"><a class="link" href="../boost/random/ranlux64_3.html" title="Type definition ranlux64_3">ranlux64_3</a></code> 1907 </p> 1908 </td> 1909<td> 1910 <p> 1911 ~10<sup>171</sup> 1912 </p> 1913 </td> 1914<td> 1915 <p> 1916 <code class="computeroutput"><span class="number">24</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">int64_t</span><span class="special">)</span></code> 1917 </p> 1918 </td> 1919<td> 1920 <p> 1921 5% 1922 </p> 1923 </td> 1924<td> 1925 <p> 1926 - 1927 </p> 1928 </td> 1929</tr> 1930<tr> 1931<td> 1932 <p> 1933 <code class="computeroutput"><a class="link" href="../boost/random/ranlux64_4.html" title="Type definition ranlux64_4">ranlux64_4</a></code> 1934 </p> 1935 </td> 1936<td> 1937 <p> 1938 ~10<sup>171</sup> 1939 </p> 1940 </td> 1941<td> 1942 <p> 1943 <code class="computeroutput"><span class="number">24</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">int64_t</span><span class="special">)</span></code> 1944 </p> 1945 </td> 1946<td> 1947 <p> 1948 3% 1949 </p> 1950 </td> 1951<td> 1952 <p> 1953 - 1954 </p> 1955 </td> 1956</tr> 1957<tr> 1958<td> 1959 <p> 1960 <code class="computeroutput"><a class="link" href="../boost/random/ranlux3_01.html" title="Type definition ranlux3_01">ranlux3_01</a></code> 1961 </p> 1962 </td> 1963<td> 1964 <p> 1965 ~10<sup>171</sup> 1966 </p> 1967 </td> 1968<td> 1969 <p> 1970 <code class="computeroutput"><span class="number">24</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">float</span><span class="special">)</span></code> 1971 </p> 1972 </td> 1973<td> 1974 <p> 1975 5% 1976 </p> 1977 </td> 1978<td> 1979 <p> 1980 - 1981 </p> 1982 </td> 1983</tr> 1984<tr> 1985<td> 1986 <p> 1987 <code class="computeroutput"><a class="link" href="../boost/random/ranlux4_01.html" title="Type definition ranlux4_01">ranlux4_01</a></code> 1988 </p> 1989 </td> 1990<td> 1991 <p> 1992 ~10<sup>171</sup> 1993 </p> 1994 </td> 1995<td> 1996 <p> 1997 <code class="computeroutput"><span class="number">24</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">float</span><span class="special">)</span></code> 1998 </p> 1999 </td> 2000<td> 2001 <p> 2002 3% 2003 </p> 2004 </td> 2005<td> 2006 <p> 2007 - 2008 </p> 2009 </td> 2010</tr> 2011<tr> 2012<td> 2013 <p> 2014 <code class="computeroutput"><a class="link" href="../boost/random/ranlux64_3_01.html" title="Type definition ranlux64_3_01">ranlux64_3_01</a></code> 2015 </p> 2016 </td> 2017<td> 2018 <p> 2019 ~10<sup>171</sup> 2020 </p> 2021 </td> 2022<td> 2023 <p> 2024 <code class="computeroutput"><span class="number">24</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">double</span><span class="special">)</span></code> 2025 </p> 2026 </td> 2027<td> 2028 <p> 2029 5% 2030 </p> 2031 </td> 2032<td> 2033 <p> 2034 - 2035 </p> 2036 </td> 2037</tr> 2038<tr> 2039<td> 2040 <p> 2041 <code class="computeroutput"><a class="link" href="../boost/random/ranlux64_4_01.html" title="Type definition ranlux64_4_01">ranlux64_4_01</a></code> 2042 </p> 2043 </td> 2044<td> 2045 <p> 2046 ~10<sup>171</sup> 2047 </p> 2048 </td> 2049<td> 2050 <p> 2051 <code class="computeroutput"><span class="number">24</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">double</span><span class="special">)</span></code> 2052 </p> 2053 </td> 2054<td> 2055 <p> 2056 3% 2057 </p> 2058 </td> 2059<td> 2060 <p> 2061 - 2062 </p> 2063 </td> 2064</tr> 2065<tr> 2066<td> 2067 <p> 2068 <code class="computeroutput"><a class="link" href="reference.html#boost.random.ranlux24">ranlux24</a></code> 2069 </p> 2070 </td> 2071<td> 2072 <p> 2073 ~10<sup>171</sup> 2074 </p> 2075 </td> 2076<td> 2077 <p> 2078 <code class="computeroutput"><span class="number">24</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">uint32_t</span><span class="special">)</span></code> 2079 </p> 2080 </td> 2081<td> 2082 <p> 2083 5% 2084 </p> 2085 </td> 2086<td> 2087 <p> 2088 - 2089 </p> 2090 </td> 2091</tr> 2092<tr> 2093<td> 2094 <p> 2095 <code class="computeroutput"><a class="link" href="reference.html#boost.random.ranlux48">ranlux48</a></code> 2096 </p> 2097 </td> 2098<td> 2099 <p> 2100 ~10<sup>171</sup> 2101 </p> 2102 </td> 2103<td> 2104 <p> 2105 <code class="computeroutput"><span class="number">12</span><span class="special">*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">uint64_t</span><span class="special">)</span></code> 2106 </p> 2107 </td> 2108<td> 2109 <p> 2110 3% 2111 </p> 2112 </td> 2113<td> 2114 <p> 2115 - 2116 </p> 2117 </td> 2118</tr> 2119</tbody> 2120</table></div> 2121</div> 2122<br class="table-break"><p> 2123 As observable from the table, there is generally a quality/performance/memory 2124 trade-off to be decided upon when choosing a random-number generator. The 2125 multitude of generators provided in this library allows the application programmer 2126 to optimize the trade-off with regard to his application domain. Additionally, 2127 employing several fundamentally different random number generators for a 2128 given application of Monte Carlo simulation will improve the confidence in 2129 the results. 2130 </p> 2131<p> 2132 If the names of the generators don't ring any bell and you have no idea which 2133 generator to use, it is reasonable to employ <code class="computeroutput"><a class="link" href="../boost/random/mt19937.html" title="Type definition mt19937">mt19937</a></code> 2134 for a start: It is fast and has acceptable quality. 2135 </p> 2136<div class="note"><table border="0" summary="Note"> 2137<tr> 2138<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td> 2139<th align="left">Note</th> 2140</tr> 2141<tr><td align="left" valign="top"><p> 2142 These random number generators are not intended for use in applications 2143 where non-deterministic random numbers are required. See <code class="computeroutput"><a class="link" href="../boost/random/random_device.html" title="Class random_device">random_device</a></code> 2144 for a choice of (hopefully) non-deterministic random number generators. 2145 </p></td></tr> 2146</table></div> 2147</div> 2148<div class="section"> 2149<div class="titlepage"><div><div><h3 class="title"> 2150<a name="boost_random.reference.distributions"></a><a class="link" href="reference.html#boost_random.reference.distributions" title="Distributions">Distributions</a> 2151</h3></div></div></div> 2152<p> 2153 In addition to the <a class="link" href="reference.html#boost_random.reference.generators" title="Generators">random 2154 number generators</a>, this library provides distribution functions which 2155 map one distribution (often a uniform distribution provided by some generator) 2156 to another. 2157 </p> 2158<p> 2159 Usually, there are several possible implementations of any given mapping. 2160 Often, there is a choice between using more space, more invocations of the 2161 underlying source of random numbers, or more time-consuming arithmetic such 2162 as trigonometric functions. This interface description does not mandate any 2163 specific implementation. However, implementations which cannot reach certain 2164 values of the specified distribution or otherwise do not converge statistically 2165 to it are not acceptable. 2166 </p> 2167<div class="table"> 2168<a name="boost_random.reference.distributions.uniform_distributions"></a><p class="title"><b>Table 33.7. Uniform Distributions</b></p> 2169<div class="table-contents"><table class="table" summary="Uniform Distributions"> 2170<colgroup> 2171<col> 2172<col> 2173<col> 2174</colgroup> 2175<thead><tr> 2176<th> 2177 <p> 2178 distribution 2179 </p> 2180 </th> 2181<th> 2182 <p> 2183 explanation 2184 </p> 2185 </th> 2186<th> 2187 <p> 2188 example 2189 </p> 2190 </th> 2191</tr></thead> 2192<tbody> 2193<tr> 2194<td> 2195 <p> 2196 <code class="computeroutput"><a class="link" href="../boost/random/uniform_smallint.html" title="Class template uniform_smallint">uniform_smallint</a></code> 2197 </p> 2198 </td> 2199<td> 2200 <p> 2201 discrete uniform distribution on a small set of integers (much 2202 smaller than the range of the underlying generator) 2203 </p> 2204 </td> 2205<td> 2206 <p> 2207 drawing from an urn 2208 </p> 2209 </td> 2210</tr> 2211<tr> 2212<td> 2213 <p> 2214 <code class="computeroutput"><a class="link" href="../boost/random/uniform_int_distribution.html" title="Class template uniform_int_distribution">uniform_int_distribution</a></code> 2215 </p> 2216 </td> 2217<td> 2218 <p> 2219 discrete uniform distribution on a set of integers; the underlying 2220 generator may be called several times to gather enough randomness 2221 for the output 2222 </p> 2223 </td> 2224<td> 2225 <p> 2226 drawing from an urn 2227 </p> 2228 </td> 2229</tr> 2230<tr> 2231<td> 2232 <p> 2233 <code class="computeroutput"><a class="link" href="../boost/random/uniform_01.html" title="Class template uniform_01">uniform_01</a></code> 2234 </p> 2235 </td> 2236<td> 2237 <p> 2238 continuous uniform distribution on the range [0,1); important basis 2239 for other distributions 2240 </p> 2241 </td> 2242<td> 2243 <p> 2244 - 2245 </p> 2246 </td> 2247</tr> 2248<tr> 2249<td> 2250 <p> 2251 <code class="computeroutput"><a class="link" href="../boost/random/uniform_real_distribution.html" title="Class template uniform_real_distribution">uniform_real_distribution</a></code> 2252 </p> 2253 </td> 2254<td> 2255 <p> 2256 continuous uniform distribution on some range [min, max) of real 2257 numbers 2258 </p> 2259 </td> 2260<td> 2261 <p> 2262 for the range [0, 2pi): randomly dropping a stick and measuring 2263 its angle in radians (assuming the angle is uniformly distributed) 2264 </p> 2265 </td> 2266</tr> 2267</tbody> 2268</table></div> 2269</div> 2270<br class="table-break"><div class="table"> 2271<a name="boost_random.reference.distributions.bernoulli_distributions"></a><p class="title"><b>Table 33.8. Bernoulli Distributions</b></p> 2272<div class="table-contents"><table class="table" summary="Bernoulli Distributions"> 2273<colgroup> 2274<col> 2275<col> 2276<col> 2277</colgroup> 2278<thead><tr> 2279<th> 2280 <p> 2281 distribution 2282 </p> 2283 </th> 2284<th> 2285 <p> 2286 explanation 2287 </p> 2288 </th> 2289<th> 2290 <p> 2291 example 2292 </p> 2293 </th> 2294</tr></thead> 2295<tbody> 2296<tr> 2297<td> 2298 <p> 2299 <code class="computeroutput"><a class="link" href="../boost/random/bernoulli_distribution.html" title="Class template bernoulli_distribution">bernoulli_distribution</a></code> 2300 </p> 2301 </td> 2302<td> 2303 <p> 2304 Bernoulli experiment: discrete boolean valued distribution with 2305 configurable probability 2306 </p> 2307 </td> 2308<td> 2309 <p> 2310 tossing a coin (p=0.5) 2311 </p> 2312 </td> 2313</tr> 2314<tr> 2315<td> 2316 <p> 2317 <code class="computeroutput"><a class="link" href="../boost/random/binomial_distribution.html" title="Class template binomial_distribution">binomial_distribution</a></code> 2318 </p> 2319 </td> 2320<td> 2321 <p> 2322 counts outcomes of repeated Bernoulli experiments 2323 </p> 2324 </td> 2325<td> 2326 <p> 2327 tossing a coin 20 times and counting how many front sides are shown 2328 </p> 2329 </td> 2330</tr> 2331<tr> 2332<td> 2333 <p> 2334 <code class="computeroutput"><a class="link" href="../boost/random/geometric_distribution.html" title="Class template geometric_distribution">geometric_distribution</a></code> 2335 </p> 2336 </td> 2337<td> 2338 <p> 2339 measures distance between outcomes of repeated Bernoulli experiments 2340 </p> 2341 </td> 2342<td> 2343 <p> 2344 throwing a die several times and counting the number of tries until 2345 a "6" appears for the first time 2346 </p> 2347 </td> 2348</tr> 2349<tr> 2350<td> 2351 <p> 2352 <code class="computeroutput"><a class="link" href="../boost/random/negati_1_3_34_5_6_27_1_1_1.html" title="Class template negative_binomial_distribution">negative_binomial_distribution</a></code> 2353 </p> 2354 </td> 2355<td> 2356 <p> 2357 Counts the number of failures of repeated Bernoulli experiments 2358 required to get some constant number of successes. 2359 </p> 2360 </td> 2361<td> 2362 <p> 2363 flipping a coin and counting the number of heads that show up before 2364 we get 3 tails 2365 </p> 2366 </td> 2367</tr> 2368</tbody> 2369</table></div> 2370</div> 2371<br class="table-break"><div class="table"> 2372<a name="boost_random.reference.distributions.poisson_distributions"></a><p class="title"><b>Table 33.9. Poisson Distributions</b></p> 2373<div class="table-contents"><table class="table" summary="Poisson Distributions"> 2374<colgroup> 2375<col> 2376<col> 2377<col> 2378</colgroup> 2379<thead><tr> 2380<th> 2381 <p> 2382 distribution 2383 </p> 2384 </th> 2385<th> 2386 <p> 2387 explanation 2388 </p> 2389 </th> 2390<th> 2391 <p> 2392 example 2393 </p> 2394 </th> 2395</tr></thead> 2396<tbody> 2397<tr> 2398<td> 2399 <p> 2400 <code class="computeroutput"><a class="link" href="../boost/random/poisson_distribution.html" title="Class template poisson_distribution">poisson_distribution</a></code> 2401 </p> 2402 </td> 2403<td> 2404 <p> 2405 poisson distribution 2406 </p> 2407 </td> 2408<td> 2409 <p> 2410 counting the number of alpha particles emitted by radioactive matter 2411 in a fixed period of time 2412 </p> 2413 </td> 2414</tr> 2415<tr> 2416<td> 2417 <p> 2418 <code class="computeroutput"><a class="link" href="../boost/random/exponential_distribution.html" title="Class template exponential_distribution">exponential_distribution</a></code> 2419 </p> 2420 </td> 2421<td> 2422 <p> 2423 exponential distribution 2424 </p> 2425 </td> 2426<td> 2427 <p> 2428 measuring the inter-arrival time of alpha particles emitted by 2429 radioactive matter 2430 </p> 2431 </td> 2432</tr> 2433<tr> 2434<td> 2435 <p> 2436 <code class="computeroutput"><a class="link" href="../boost/random/gamma_distribution.html" title="Class template gamma_distribution">gamma_distribution</a></code> 2437 </p> 2438 </td> 2439<td> 2440 <p> 2441 gamma distribution 2442 </p> 2443 </td> 2444<td> 2445 <p> 2446 - 2447 </p> 2448 </td> 2449</tr> 2450<tr> 2451<td> 2452 <p> 2453 <code class="computeroutput"><a class="link" href="../boost/random/hypere_1_3_34_5_6_18_1_1_1.html" title="Class template hyperexponential_distribution">hyperexponential_distribution</a></code> 2454 </p> 2455 </td> 2456<td> 2457 <p> 2458 hyperexponential distribution 2459 </p> 2460 </td> 2461<td> 2462 <p> 2463 service time of k-parallel servers each with a given service rate 2464 and probability to be chosen 2465 </p> 2466 </td> 2467</tr> 2468<tr> 2469<td> 2470 <p> 2471 <code class="computeroutput"><a class="link" href="../boost/random/weibull_distribution.html" title="Class template weibull_distribution">weibull_distribution</a></code> 2472 </p> 2473 </td> 2474<td> 2475 <p> 2476 weibull distribution 2477 </p> 2478 </td> 2479<td> 2480 <p> 2481 - 2482 </p> 2483 </td> 2484</tr> 2485<tr> 2486<td> 2487 <p> 2488 <code class="computeroutput"><a class="link" href="../boost/random/extreme_value_distribution.html" title="Class template extreme_value_distribution">extreme_value_distribution</a></code> 2489 </p> 2490 </td> 2491<td> 2492 <p> 2493 extreme value distribution 2494 </p> 2495 </td> 2496<td> 2497 <p> 2498 - 2499 </p> 2500 </td> 2501</tr> 2502<tr> 2503<td> 2504 <p> 2505 <code class="computeroutput"><a class="link" href="../boost/random/beta_distribution.html" title="Class template beta_distribution">beta_distribution</a></code> 2506 </p> 2507 </td> 2508<td> 2509 <p> 2510 beta distribution 2511 </p> 2512 </td> 2513<td> 2514 <p> 2515 - 2516 </p> 2517 </td> 2518</tr> 2519<tr> 2520<td> 2521 <p> 2522 <code class="computeroutput"><a class="link" href="../boost/random/laplace_distribution.html" title="Class template laplace_distribution">laplace_distribution</a></code> 2523 </p> 2524 </td> 2525<td> 2526 <p> 2527 laplace distribution 2528 </p> 2529 </td> 2530<td> 2531 <p> 2532 - 2533 </p> 2534 </td> 2535</tr> 2536</tbody> 2537</table></div> 2538</div> 2539<br class="table-break"><div class="table"> 2540<a name="boost_random.reference.distributions.normal_distributions"></a><p class="title"><b>Table 33.10. Normal Distributions</b></p> 2541<div class="table-contents"><table class="table" summary="Normal Distributions"> 2542<colgroup> 2543<col> 2544<col> 2545<col> 2546</colgroup> 2547<thead><tr> 2548<th> 2549 <p> 2550 distribution 2551 </p> 2552 </th> 2553<th> 2554 <p> 2555 explanation 2556 </p> 2557 </th> 2558<th> 2559 <p> 2560 example 2561 </p> 2562 </th> 2563</tr></thead> 2564<tbody> 2565<tr> 2566<td> 2567 <p> 2568 <code class="computeroutput"><a class="link" href="../boost/random/normal_distribution.html" title="Class template normal_distribution">normal_distribution</a></code> 2569 </p> 2570 </td> 2571<td> 2572 <p> 2573 counts outcomes of (infinitely) repeated Bernoulli experiments 2574 </p> 2575 </td> 2576<td> 2577 <p> 2578 tossing a coin 10000 times and counting how many front sides are 2579 shown 2580 </p> 2581 </td> 2582</tr> 2583<tr> 2584<td> 2585 <p> 2586 <code class="computeroutput"><a class="link" href="../boost/random/lognormal_distribution.html" title="Class template lognormal_distribution">lognormal_distribution</a></code> 2587 </p> 2588 </td> 2589<td> 2590 <p> 2591 lognormal distribution (sometimes used in simulations) 2592 </p> 2593 </td> 2594<td> 2595 <p> 2596 measuring the job completion time of an assembly line worker 2597 </p> 2598 </td> 2599</tr> 2600<tr> 2601<td> 2602 <p> 2603 <code class="computeroutput"><a class="link" href="../boost/random/chi_squared_distribution.html" title="Class template chi_squared_distribution">chi_squared_distribution</a></code> 2604 </p> 2605 </td> 2606<td> 2607 <p> 2608 chi-squared distribution 2609 </p> 2610 </td> 2611<td> 2612 <p> 2613 - 2614 </p> 2615 </td> 2616</tr> 2617<tr> 2618<td> 2619 <p> 2620 <code class="computeroutput"><a class="link" href="../boost/random/non_ce_1_3_34_5_6_29_1_1_1.html" title="Class template non_central_chi_squared_distribution">non_central_chi_squared_distribution</a></code> 2621 </p> 2622 </td> 2623<td> 2624 <p> 2625 non-central chi-squared distribution 2626 </p> 2627 </td> 2628<td> 2629 <p> 2630 - 2631 </p> 2632 </td> 2633</tr> 2634<tr> 2635<td> 2636 <p> 2637 <code class="computeroutput"><a class="link" href="../boost/random/cauchy_distribution.html" title="Class template cauchy_distribution">cauchy_distribution</a></code> 2638 </p> 2639 </td> 2640<td> 2641 <p> 2642 Cauchy distribution 2643 </p> 2644 </td> 2645<td> 2646 <p> 2647 - 2648 </p> 2649 </td> 2650</tr> 2651<tr> 2652<td> 2653 <p> 2654 <code class="computeroutput"><a class="link" href="../boost/random/fisher_f_distribution.html" title="Class template fisher_f_distribution">fisher_f_distribution</a></code> 2655 </p> 2656 </td> 2657<td> 2658 <p> 2659 Fisher F distribution 2660 </p> 2661 </td> 2662<td> 2663 <p> 2664 - 2665 </p> 2666 </td> 2667</tr> 2668<tr> 2669<td> 2670 <p> 2671 <code class="computeroutput"><a class="link" href="../boost/random/student_t_distribution.html" title="Class template student_t_distribution">student_t_distribution</a></code> 2672 </p> 2673 </td> 2674<td> 2675 <p> 2676 Student t distribution 2677 </p> 2678 </td> 2679<td> 2680 <p> 2681 - 2682 </p> 2683 </td> 2684</tr> 2685</tbody> 2686</table></div> 2687</div> 2688<br class="table-break"><div class="table"> 2689<a name="boost_random.reference.distributions.sampling_distributions"></a><p class="title"><b>Table 33.11. Sampling Distributions</b></p> 2690<div class="table-contents"><table class="table" summary="Sampling Distributions"> 2691<colgroup> 2692<col> 2693<col> 2694<col> 2695</colgroup> 2696<thead><tr> 2697<th> 2698 <p> 2699 distribution 2700 </p> 2701 </th> 2702<th> 2703 <p> 2704 explanation 2705 </p> 2706 </th> 2707<th> 2708 <p> 2709 example 2710 </p> 2711 </th> 2712</tr></thead> 2713<tbody> 2714<tr> 2715<td> 2716 <p> 2717 <code class="computeroutput"><a class="link" href="../boost/random/discrete_distribution.html" title="Class template discrete_distribution">discrete_distribution</a></code> 2718 </p> 2719 </td> 2720<td> 2721 <p> 2722 discrete distribution with specific probabilities 2723 </p> 2724 </td> 2725<td> 2726 <p> 2727 rolling an unfair die 2728 </p> 2729 </td> 2730</tr> 2731<tr> 2732<td> 2733 <p> 2734 <code class="computeroutput"><a class="link" href="../boost/random/piecew_1_3_34_5_6_31_1_1_1.html" title="Class template piecewise_constant_distribution">piecewise_constant_distribution</a></code> 2735 </p> 2736 </td> 2737<td> 2738 <p> 2739 - 2740 </p> 2741 </td> 2742<td> 2743 <p> 2744 - 2745 </p> 2746 </td> 2747</tr> 2748<tr> 2749<td> 2750 <p> 2751 <code class="computeroutput"><a class="link" href="../boost/random/piecew_1_3_34_5_6_32_1_1_1.html" title="Class template piecewise_linear_distribution">piecewise_linear_distribution</a></code> 2752 </p> 2753 </td> 2754<td> 2755 <p> 2756 - 2757 </p> 2758 </td> 2759<td> 2760 <p> 2761 - 2762 </p> 2763 </td> 2764</tr> 2765</tbody> 2766</table></div> 2767</div> 2768<br class="table-break"><div class="table"> 2769<a name="boost_random.reference.distributions.miscellaneous_distributions"></a><p class="title"><b>Table 33.12. Miscellaneous Distributions</b></p> 2770<div class="table-contents"><table class="table" summary="Miscellaneous Distributions"> 2771<colgroup> 2772<col> 2773<col> 2774<col> 2775</colgroup> 2776<thead><tr> 2777<th> 2778 <p> 2779 distribution 2780 </p> 2781 </th> 2782<th> 2783 <p> 2784 explanation 2785 </p> 2786 </th> 2787<th> 2788 <p> 2789 example 2790 </p> 2791 </th> 2792</tr></thead> 2793<tbody> 2794<tr> 2795<td> 2796 <p> 2797 <code class="computeroutput"><a class="link" href="../boost/random/triangle_distribution.html" title="Class template triangle_distribution">triangle_distribution</a></code> 2798 </p> 2799 </td> 2800<td> 2801 <p> 2802 triangle distribution 2803 </p> 2804 </td> 2805<td> 2806 <p> 2807 - 2808 </p> 2809 </td> 2810</tr> 2811<tr> 2812<td> 2813 <p> 2814 <code class="computeroutput"><a class="link" href="../boost/random/uniform_on_sphere.html" title="Class template uniform_on_sphere">uniform_on_sphere</a></code> 2815 </p> 2816 </td> 2817<td> 2818 <p> 2819 uniform distribution on a unit sphere of arbitrary dimension 2820 </p> 2821 </td> 2822<td> 2823 <p> 2824 choosing a random point on Earth (assumed to be a sphere) where 2825 to spend the next vacations 2826 </p> 2827 </td> 2828</tr> 2829</tbody> 2830</table></div> 2831</div> 2832<br class="table-break"> 2833</div> 2834<div class="section"> 2835<div class="titlepage"><div><div><h3 class="title"> 2836<a name="boost_random.reference.utilities"></a><a class="link" href="reference.html#boost_random.reference.utilities" title="Utilities">Utilities</a> 2837</h3></div></div></div> 2838<div class="table"> 2839<a name="boost_random.reference.utilities.utilities"></a><p class="title"><b>Table 33.13. Utilities</b></p> 2840<div class="table-contents"><table class="table" summary="Utilities"> 2841<colgroup> 2842<col> 2843<col> 2844</colgroup> 2845<thead><tr> 2846<th> 2847 <p> 2848 Name 2849 </p> 2850 </th> 2851<th> 2852 <p> 2853 Description 2854 </p> 2855 </th> 2856</tr></thead> 2857<tbody> 2858<tr> 2859<td> 2860 <p> 2861 <code class="computeroutput"><a class="link" href="../boost/random/seed_seq.html" title="Class seed_seq">seed_seq</a></code> 2862 </p> 2863 </td> 2864<td> 2865 <p> 2866 Used to seed <a class="link" href="reference.html#boost_random.reference.concepts.pseudo_random_number_generator" title="Pseudo-Random Number Generator">Random 2867 Engines</a> 2868 </p> 2869 </td> 2870</tr> 2871<tr> 2872<td> 2873 <p> 2874 <code class="computeroutput"><a class="link" href="../boost/random/random_number_generator.html" title="Class template random_number_generator">random_number_generator</a></code> 2875 </p> 2876 </td> 2877<td> 2878 <p> 2879 Adapts a <a class="link" href="reference.html#boost_random.reference.concepts.pseudo_random_number_generator" title="Pseudo-Random Number Generator">PseudoRandomNumberGenerator</a> 2880 to work with std::random_shuffle 2881 </p> 2882 </td> 2883</tr> 2884<tr> 2885<td> 2886 <p> 2887 <code class="computeroutput"><a class="link" href="../boost/random/generate_canonical.html" title="Function template generate_canonical">generate_canonical</a></code> 2888 </p> 2889 </td> 2890<td> 2891 <p> 2892 Produces random floating point values with specific precision. 2893 </p> 2894 </td> 2895</tr> 2896</tbody> 2897</table></div> 2898</div> 2899<br class="table-break"> 2900</div> 2901<div class="section"> 2902<div class="titlepage"><div><div><h3 class="title"> 2903<a name="headers"></a>Headers</h3></div></div></div> 2904<div class="toc"><dl class="toc"> 2905<dt><span class="section"><a href="reference.html#header.boost.random.additive_combine_hpp">Header <boost/random/additive_combine.hpp></a></span></dt> 2906<dt><span class="section"><a href="reference.html#header.boost.random.bernoulli_distribution_hpp">Header <boost/random/bernoulli_distribution.hpp></a></span></dt> 2907<dt><span class="section"><a href="reference.html#header.boost.random.beta_distribution_hpp">Header <boost/random/beta_distribution.hpp></a></span></dt> 2908<dt><span class="section"><a href="reference.html#header.boost.random.binomial_distribution_hpp">Header <boost/random/binomial_distribution.hpp></a></span></dt> 2909<dt><span class="section"><a href="reference.html#header.boost.random.cauchy_distribution_hpp">Header <boost/random/cauchy_distribution.hpp></a></span></dt> 2910<dt><span class="section"><a href="reference.html#header.boost.random.chi_squared_distribution_hpp">Header <boost/random/chi_squared_distribution.hpp></a></span></dt> 2911<dt><span class="section"><a href="reference.html#header.boost.random.discard_block_hpp">Header <boost/random/discard_block.hpp></a></span></dt> 2912<dt><span class="section"><a href="reference.html#header.boost.random.discrete_distribution_hpp">Header <boost/random/discrete_distribution.hpp></a></span></dt> 2913<dt><span class="section"><a href="reference.html#header.boost.random.exponential_distribution_hpp">Header <boost/random/exponential_distribution.hpp></a></span></dt> 2914<dt><span class="section"><a href="reference.html#header.boost.random.extreme_value_distribution_hpp">Header <boost/random/extreme_value_distribution.hpp></a></span></dt> 2915<dt><span class="section"><a href="reference.html#header.boost.random.faure_hpp">Header <boost/random/faure.hpp></a></span></dt> 2916<dt><span class="section"><a href="reference.html#header.boost.random.fisher_f_distribution_hpp">Header <boost/random/fisher_f_distribution.hpp></a></span></dt> 2917<dt><span class="section"><a href="reference.html#header.boost.random.gamma_distribution_hpp">Header <boost/random/gamma_distribution.hpp></a></span></dt> 2918<dt><span class="section"><a href="reference.html#header.boost.random.generate_canonical_hpp">Header <boost/random/generate_canonical.hpp></a></span></dt> 2919<dt><span class="section"><a href="reference.html#header.boost.random.geometric_distribution_hpp">Header <boost/random/geometric_distribution.hpp></a></span></dt> 2920<dt><span class="section"><a href="reference.html#header.boost.random.hyperexponential_distribution_hpp">Header <boost/random/hyperexponential_distribution.hpp></a></span></dt> 2921<dt><span class="section"><a href="reference.html#header.boost.random.independent_bits_hpp">Header <boost/random/independent_bits.hpp></a></span></dt> 2922<dt><span class="section"><a href="reference.html#header.boost.random.inversive_congruential_hpp">Header <boost/random/inversive_congruential.hpp></a></span></dt> 2923<dt><span class="section"><a href="reference.html#header.boost.random.lagged_fibonacci_hpp">Header <boost/random/lagged_fibonacci.hpp></a></span></dt> 2924<dt><span class="section"><a href="reference.html#header.boost.random.laplace_distribution_hpp">Header <boost/random/laplace_distribution.hpp></a></span></dt> 2925<dt><span class="section"><a href="reference.html#header.boost.random.linear_congruential_hpp">Header <boost/random/linear_congruential.hpp></a></span></dt> 2926<dt><span class="section"><a href="reference.html#header.boost.random.linear_feedback_shift_hpp">Header <boost/random/linear_feedback_shift.hpp></a></span></dt> 2927<dt><span class="section"><a href="reference.html#header.boost.random.lognormal_distribution_hpp">Header <boost/random/lognormal_distribution.hpp></a></span></dt> 2928<dt><span class="section"><a href="reference.html#header.boost.random.mersenne_twister_hpp">Header <boost/random/mersenne_twister.hpp></a></span></dt> 2929<dt><span class="section"><a href="reference.html#header.boost.random.negative_binomial_distribution_hpp">Header <boost/random/negative_binomial_distribution.hpp></a></span></dt> 2930<dt><span class="section"><a href="reference.html#header.boost.random.niederreiter_base2_hpp">Header <boost/random/niederreiter_base2.hpp></a></span></dt> 2931<dt><span class="section"><a href="reference.html#header.boost.random.non_central_chi_squared_distribution_hpp">Header <boost/random/non_central_chi_squared_distribution.hpp></a></span></dt> 2932<dt><span class="section"><a href="reference.html#header.boost.random.normal_distribution_hpp">Header <boost/random/normal_distribution.hpp></a></span></dt> 2933<dt><span class="section"><a href="reference.html#header.boost.random.piecewise_constant_distribution_hpp">Header <boost/random/piecewise_constant_distribution.hpp></a></span></dt> 2934<dt><span class="section"><a href="reference.html#header.boost.random.piecewise_linear_distribution_hpp">Header <boost/random/piecewise_linear_distribution.hpp></a></span></dt> 2935<dt><span class="section"><a href="reference.html#header.boost.random.poisson_distribution_hpp">Header <boost/random/poisson_distribution.hpp></a></span></dt> 2936<dt><span class="section"><a href="reference.html#header.boost.random.random_device_hpp">Header <boost/random/random_device.hpp></a></span></dt> 2937<dt><span class="section"><a href="reference.html#header.boost.random.random_number_generator_hpp">Header <boost/random/random_number_generator.hpp></a></span></dt> 2938<dt><span class="section"><a href="reference.html#header.boost.random.ranlux_hpp">Header <boost/random/ranlux.hpp></a></span></dt> 2939<dt><span class="section"><a href="reference.html#header.boost.random.seed_seq_hpp">Header <boost/random/seed_seq.hpp></a></span></dt> 2940<dt><span class="section"><a href="reference.html#header.boost.random.shuffle_order_hpp">Header <boost/random/shuffle_order.hpp></a></span></dt> 2941<dt><span class="section"><a href="reference.html#header.boost.random.sobol_hpp">Header <boost/random/sobol.hpp></a></span></dt> 2942<dt><span class="section"><a href="reference.html#header.boost.random.student_t_distribution_hpp">Header <boost/random/student_t_distribution.hpp></a></span></dt> 2943<dt><span class="section"><a href="reference.html#header.boost.random.subtract_with_carry_hpp">Header <boost/random/subtract_with_carry.hpp></a></span></dt> 2944<dt><span class="section"><a href="reference.html#header.boost.random.taus88_hpp">Header <boost/random/taus88.hpp></a></span></dt> 2945<dt><span class="section"><a href="reference.html#header.boost.random.traits_hpp">Header <boost/random/traits.hpp></a></span></dt> 2946<dt><span class="section"><a href="reference.html#header.boost.random.triangle_distribution_hpp">Header <boost/random/triangle_distribution.hpp></a></span></dt> 2947<dt><span class="section"><a href="reference.html#header.boost.random.uniform_01_hpp">Header <boost/random/uniform_01.hpp></a></span></dt> 2948<dt><span class="section"><a href="reference.html#header.boost.random.uniform_int_distribution_hpp">Header <boost/random/uniform_int_distribution.hpp></a></span></dt> 2949<dt><span class="section"><a href="reference.html#header.boost.random.uniform_on_sphere_hpp">Header <boost/random/uniform_on_sphere.hpp></a></span></dt> 2950<dt><span class="section"><a href="reference.html#header.boost.random.uniform_real_distribution_hpp">Header <boost/random/uniform_real_distribution.hpp></a></span></dt> 2951<dt><span class="section"><a href="reference.html#header.boost.random.uniform_smallint_hpp">Header <boost/random/uniform_smallint.hpp></a></span></dt> 2952<dt><span class="section"><a href="reference.html#header.boost.random.variate_generator_hpp">Header <boost/random/variate_generator.hpp></a></span></dt> 2953<dt><span class="section"><a href="reference.html#header.boost.random.weibull_distribution_hpp">Header <boost/random/weibull_distribution.hpp></a></span></dt> 2954<dt><span class="section"><a href="reference.html#header.boost.random.xor_combine_hpp">Header <boost/random/xor_combine.hpp></a></span></dt> 2955</dl></div> 2956<div class="section"> 2957<div class="titlepage"><div><div><h4 class="title"> 2958<a name="header.boost.random.additive_combine_hpp"></a>Header <<a href="../../../boost/random/additive_combine.hpp" target="_top">boost/random/additive_combine.hpp</a>></h4></div></div></div> 2959<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 2960 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 2961 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> MLCG1<span class="special">,</span> <span class="keyword">typename</span> MLCG2<span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/additive_combine_engine.html" title="Class template additive_combine_engine">additive_combine_engine</a><span class="special">;</span> 2962 <span class="keyword">typedef</span> <a class="link" href="../boost/random/additive_combine_engine.html" title="Class template additive_combine_engine">additive_combine_engine</a><span class="special"><</span> <a class="link" href="../boost/random/linear_congruential_engine.html" title="Class template linear_congruential_engine">linear_congruential_engine</a><span class="special"><</span> <span class="identifier">uint32_t</span><span class="special">,</span> <span class="number">40014</span><span class="special">,</span> <span class="number">0</span><span class="special">,</span> <span class="number">2147483563</span> <span class="special">></span><span class="special">,</span> <a class="link" href="../boost/random/linear_congruential_engine.html" title="Class template linear_congruential_engine">linear_congruential_engine</a><span class="special"><</span> <span class="identifier">uint32_t</span><span class="special">,</span> <span class="number">40692</span><span class="special">,</span> <span class="number">0</span><span class="special">,</span> <span class="number">2147483399</span> <span class="special">>></span> <a class="link" href="../boost/random/ecuyer1988.html" title="Type definition ecuyer1988"><span class="identifier">ecuyer1988</span></a><span class="special">;</span> 2963 <span class="special">}</span> 2964<span class="special">}</span></pre> 2965</div> 2966<div class="section"> 2967<div class="titlepage"><div><div><h4 class="title"> 2968<a name="header.boost.random.bernoulli_distribution_hpp"></a>Header <<a href="../../../boost/random/bernoulli_distribution.hpp" target="_top">boost/random/bernoulli_distribution.hpp</a>></h4></div></div></div> 2969<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 2970 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 2971 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/bernoulli_distribution.html" title="Class template bernoulli_distribution">bernoulli_distribution</a><span class="special">;</span> 2972 <span class="special">}</span> 2973<span class="special">}</span></pre> 2974</div> 2975<div class="section"> 2976<div class="titlepage"><div><div><h4 class="title"> 2977<a name="header.boost.random.beta_distribution_hpp"></a>Header <<a href="../../../boost/random/beta_distribution.hpp" target="_top">boost/random/beta_distribution.hpp</a>></h4></div></div></div> 2978<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 2979 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 2980 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/beta_distribution.html" title="Class template beta_distribution">beta_distribution</a><span class="special">;</span> 2981 <span class="special">}</span> 2982<span class="special">}</span></pre> 2983</div> 2984<div class="section"> 2985<div class="titlepage"><div><div><h4 class="title"> 2986<a name="header.boost.random.binomial_distribution_hpp"></a>Header <<a href="../../../boost/random/binomial_distribution.hpp" target="_top">boost/random/binomial_distribution.hpp</a>></h4></div></div></div> 2987<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 2988 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 2989 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> IntType <span class="special">=</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> 2990 <span class="keyword">class</span> <a class="link" href="../boost/random/binomial_distribution.html" title="Class template binomial_distribution">binomial_distribution</a><span class="special">;</span> 2991 <span class="special">}</span> 2992<span class="special">}</span></pre> 2993</div> 2994<div class="section"> 2995<div class="titlepage"><div><div><h4 class="title"> 2996<a name="header.boost.random.cauchy_distribution_hpp"></a>Header <<a href="../../../boost/random/cauchy_distribution.hpp" target="_top">boost/random/cauchy_distribution.hpp</a>></h4></div></div></div> 2997<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 2998 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 2999 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/cauchy_distribution.html" title="Class template cauchy_distribution">cauchy_distribution</a><span class="special">;</span> 3000 <span class="special">}</span> 3001<span class="special">}</span></pre> 3002</div> 3003<div class="section"> 3004<div class="titlepage"><div><div><h4 class="title"> 3005<a name="header.boost.random.chi_squared_distribution_hpp"></a>Header <<a href="../../../boost/random/chi_squared_distribution.hpp" target="_top">boost/random/chi_squared_distribution.hpp</a>></h4></div></div></div> 3006<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3007 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3008 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/chi_squared_distribution.html" title="Class template chi_squared_distribution">chi_squared_distribution</a><span class="special">;</span> 3009 <span class="special">}</span> 3010<span class="special">}</span></pre> 3011</div> 3012<div class="section"> 3013<div class="titlepage"><div><div><h4 class="title"> 3014<a name="header.boost.random.discard_block_hpp"></a>Header <<a href="../../../boost/random/discard_block.hpp" target="_top">boost/random/discard_block.hpp</a>></h4></div></div></div> 3015<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3016 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3017 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> UniformRandomNumberGenerator<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> p<span class="special">,</span> 3018 <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> r<span class="special">></span> 3019 <span class="keyword">class</span> <a class="link" href="../boost/random/discard_block_engine.html" title="Class template discard_block_engine">discard_block_engine</a><span class="special">;</span> 3020 <span class="special">}</span> 3021<span class="special">}</span></pre> 3022</div> 3023<div class="section"> 3024<div class="titlepage"><div><div><h4 class="title"> 3025<a name="header.boost.random.discrete_distribution_hpp"></a>Header <<a href="../../../boost/random/discrete_distribution.hpp" target="_top">boost/random/discrete_distribution.hpp</a>></h4></div></div></div> 3026<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3027 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3028 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> IntType <span class="special">=</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">typename</span> WeightType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> 3029 <span class="keyword">class</span> <a class="link" href="../boost/random/discrete_distribution.html" title="Class template discrete_distribution">discrete_distribution</a><span class="special">;</span> 3030 <span class="special">}</span> 3031<span class="special">}</span></pre> 3032</div> 3033<div class="section"> 3034<div class="titlepage"><div><div><h4 class="title"> 3035<a name="header.boost.random.exponential_distribution_hpp"></a>Header <<a href="../../../boost/random/exponential_distribution.hpp" target="_top">boost/random/exponential_distribution.hpp</a>></h4></div></div></div> 3036<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3037 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3038 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/exponential_distribution.html" title="Class template exponential_distribution">exponential_distribution</a><span class="special">;</span> 3039 <span class="special">}</span> 3040<span class="special">}</span></pre> 3041</div> 3042<div class="section"> 3043<div class="titlepage"><div><div><h4 class="title"> 3044<a name="header.boost.random.extreme_value_distribution_hpp"></a>Header <<a href="../../../boost/random/extreme_value_distribution.hpp" target="_top">boost/random/extreme_value_distribution.hpp</a>></h4></div></div></div> 3045<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3046 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3047 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/extreme_value_distribution.html" title="Class template extreme_value_distribution">extreme_value_distribution</a><span class="special">;</span> 3048 <span class="special">}</span> 3049<span class="special">}</span></pre> 3050</div> 3051<div class="section"> 3052<div class="titlepage"><div><div><h4 class="title"> 3053<a name="header.boost.random.faure_hpp"></a>Header <<a href="../../../boost/random/faure.hpp" target="_top">boost/random/faure.hpp</a>></h4></div></div></div> 3054<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3055 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3056 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType<span class="special">,</span> <span class="keyword">typename</span> SeqSizeT<span class="special">,</span> 3057 <span class="keyword">typename</span> PrimeTable <span class="special">=</span> <span class="identifier">default_faure_prime_table</span><span class="special">></span> 3058 <span class="keyword">class</span> <a class="link" href="../boost/random/faure_engine.html" title="Class template faure_engine">faure_engine</a><span class="special">;</span> 3059 <span class="keyword">typedef</span> <a class="link" href="../boost/random/faure_engine.html" title="Class template faure_engine">faure_engine</a><span class="special"><</span> <span class="keyword">double</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="identifier">default_faure_prime_table</span> <span class="special">></span> <a class="link" href="../boost/random/faure.html" title="Type definition faure"><span class="identifier">faure</span></a><span class="special">;</span> 3060 <span class="special">}</span> 3061<span class="special">}</span></pre> 3062</div> 3063<div class="section"> 3064<div class="titlepage"><div><div><h4 class="title"> 3065<a name="header.boost.random.fisher_f_distribution_hpp"></a>Header <<a href="../../../boost/random/fisher_f_distribution.hpp" target="_top">boost/random/fisher_f_distribution.hpp</a>></h4></div></div></div> 3066<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3067 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3068 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/fisher_f_distribution.html" title="Class template fisher_f_distribution">fisher_f_distribution</a><span class="special">;</span> 3069 <span class="special">}</span> 3070<span class="special">}</span></pre> 3071</div> 3072<div class="section"> 3073<div class="titlepage"><div><div><h4 class="title"> 3074<a name="header.boost.random.gamma_distribution_hpp"></a>Header <<a href="../../../boost/random/gamma_distribution.hpp" target="_top">boost/random/gamma_distribution.hpp</a>></h4></div></div></div> 3075<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3076 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3077 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/gamma_distribution.html" title="Class template gamma_distribution">gamma_distribution</a><span class="special">;</span> 3078 <span class="special">}</span> 3079<span class="special">}</span></pre> 3080</div> 3081<div class="section"> 3082<div class="titlepage"><div><div><h4 class="title"> 3083<a name="header.boost.random.generate_canonical_hpp"></a>Header <<a href="../../../boost/random/generate_canonical.hpp" target="_top">boost/random/generate_canonical.hpp</a>></h4></div></div></div> 3084<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3085 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3086 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> bits<span class="special">,</span> <span class="keyword">typename</span> URNG<span class="special">></span> 3087 <span class="identifier">RealType</span> <a class="link" href="../boost/random/generate_canonical.html" title="Function template generate_canonical"><span class="identifier">generate_canonical</span></a><span class="special">(</span><span class="identifier">URNG</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span> 3088 <span class="special">}</span> 3089<span class="special">}</span></pre> 3090</div> 3091<div class="section"> 3092<div class="titlepage"><div><div><h4 class="title"> 3093<a name="header.boost.random.geometric_distribution_hpp"></a>Header <<a href="../../../boost/random/geometric_distribution.hpp" target="_top">boost/random/geometric_distribution.hpp</a>></h4></div></div></div> 3094<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3095 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3096 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> IntType <span class="special">=</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> 3097 <span class="keyword">class</span> <a class="link" href="../boost/random/geometric_distribution.html" title="Class template geometric_distribution">geometric_distribution</a><span class="special">;</span> 3098 <span class="special">}</span> 3099<span class="special">}</span></pre> 3100</div> 3101<div class="section"> 3102<div class="titlepage"><div><div><h4 class="title"> 3103<a name="header.boost.random.hyperexponential_distribution_hpp"></a>Header <<a href="../../../boost/random/hyperexponential_distribution.hpp" target="_top">boost/random/hyperexponential_distribution.hpp</a>></h4></div></div></div> 3104<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3105 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3106 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealT <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/hypere_1_3_34_5_6_18_1_1_1.html" title="Class template hyperexponential_distribution">hyperexponential_distribution</a><span class="special">;</span> 3107 <span class="special">}</span> 3108<span class="special">}</span></pre> 3109</div> 3110<div class="section"> 3111<div class="titlepage"><div><div><h4 class="title"> 3112<a name="header.boost.random.independent_bits_hpp"></a>Header <<a href="../../../boost/random/independent_bits.hpp" target="_top">boost/random/independent_bits.hpp</a>></h4></div></div></div> 3113<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3114 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3115 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Engine<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> w<span class="special">,</span> <span class="keyword">typename</span> UIntType<span class="special">></span> 3116 <span class="keyword">class</span> <a class="link" href="../boost/random/independent_bits_engine.html" title="Class template independent_bits_engine">independent_bits_engine</a><span class="special">;</span> 3117 <span class="special">}</span> 3118<span class="special">}</span></pre> 3119</div> 3120<div class="section"> 3121<div class="titlepage"><div><div><h4 class="title"> 3122<a name="header.boost.random.inversive_congruential_hpp"></a>Header <<a href="../../../boost/random/inversive_congruential.hpp" target="_top">boost/random/inversive_congruential.hpp</a>></h4></div></div></div> 3123<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3124 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3125 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> IntType<span class="special">,</span> <span class="identifier">IntType</span> a<span class="special">,</span> <span class="identifier">IntType</span> b<span class="special">,</span> <span class="identifier">IntType</span> p<span class="special">></span> 3126 <span class="keyword">class</span> <a class="link" href="../boost/random/invers_1_3_34_5_6_20_1_1_1.html" title="Class template inversive_congruential_engine">inversive_congruential_engine</a><span class="special">;</span> 3127 <span class="keyword">typedef</span> <a class="link" href="../boost/random/invers_1_3_34_5_6_20_1_1_1.html" title="Class template inversive_congruential_engine">inversive_congruential_engine</a><span class="special"><</span> <span class="identifier">uint32_t</span><span class="special">,</span> <span class="number">9102</span><span class="special">,</span> <span class="number">2147483647</span><span class="special">-</span><span class="number">36884165</span><span class="special">,</span> <span class="number">2147483647</span> <span class="special">></span> <a class="link" href="../boost/random/hellekalek1995.html" title="Type definition hellekalek1995"><span class="identifier">hellekalek1995</span></a><span class="special">;</span> 3128 <span class="special">}</span> 3129<span class="special">}</span></pre> 3130</div> 3131<div class="section"> 3132<div class="titlepage"><div><div><h4 class="title"> 3133<a name="header.boost.random.lagged_fibonacci_hpp"></a>Header <<a href="../../../boost/random/lagged_fibonacci.hpp" target="_top">boost/random/lagged_fibonacci.hpp</a>></h4></div></div></div> 3134<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3135 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3136 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType<span class="special">,</span> <span class="keyword">int</span> w<span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">int</span> p<span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">int</span> q<span class="special">></span> 3137 <span class="keyword">class</span> <a class="link" href="../boost/random/lagged_fibonacci_01_engine.html" title="Class template lagged_fibonacci_01_engine">lagged_fibonacci_01_engine</a><span class="special">;</span> 3138 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> UIntType<span class="special">,</span> <span class="keyword">int</span> w<span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">int</span> p<span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">int</span> q<span class="special">></span> 3139 <span class="keyword">class</span> <a class="link" href="../boost/random/lagged_fibonacci_engine.html" title="Class template lagged_fibonacci_engine">lagged_fibonacci_engine</a><span class="special">;</span> 3140 <span class="keyword">typedef</span> <a class="link" href="../boost/random/lagged_fibonacci_01_engine.html" title="Class template lagged_fibonacci_01_engine">lagged_fibonacci_01_engine</a><span class="special"><</span> <span class="keyword">double</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="number">607</span><span class="special">,</span> <span class="number">273</span> <span class="special">></span> <a class="link" href="../boost/random/lagged_fibonacci607.html" title="Type definition lagged_fibonacci607"><span class="identifier">lagged_fibonacci607</span></a><span class="special">;</span> 3141 <span class="keyword">typedef</span> <a class="link" href="../boost/random/lagged_fibonacci_01_engine.html" title="Class template lagged_fibonacci_01_engine">lagged_fibonacci_01_engine</a><span class="special"><</span> <span class="keyword">double</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="number">1279</span><span class="special">,</span> <span class="number">418</span> <span class="special">></span> <a class="link" href="../boost/random/lagged_fibonacci1279.html" title="Type definition lagged_fibonacci1279"><span class="identifier">lagged_fibonacci1279</span></a><span class="special">;</span> 3142 <span class="keyword">typedef</span> <a class="link" href="../boost/random/lagged_fibonacci_01_engine.html" title="Class template lagged_fibonacci_01_engine">lagged_fibonacci_01_engine</a><span class="special"><</span> <span class="keyword">double</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="number">2281</span><span class="special">,</span> <span class="number">1252</span> <span class="special">></span> <a class="link" href="../boost/random/lagged_fibonacci2281.html" title="Type definition lagged_fibonacci2281"><span class="identifier">lagged_fibonacci2281</span></a><span class="special">;</span> 3143 <span class="keyword">typedef</span> <a class="link" href="../boost/random/lagged_fibonacci_01_engine.html" title="Class template lagged_fibonacci_01_engine">lagged_fibonacci_01_engine</a><span class="special"><</span> <span class="keyword">double</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="number">3217</span><span class="special">,</span> <span class="number">576</span> <span class="special">></span> <a class="link" href="../boost/random/lagged_fibonacci3217.html" title="Type definition lagged_fibonacci3217"><span class="identifier">lagged_fibonacci3217</span></a><span class="special">;</span> 3144 <span class="keyword">typedef</span> <a class="link" href="../boost/random/lagged_fibonacci_01_engine.html" title="Class template lagged_fibonacci_01_engine">lagged_fibonacci_01_engine</a><span class="special"><</span> <span class="keyword">double</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="number">4423</span><span class="special">,</span> <span class="number">2098</span> <span class="special">></span> <a class="link" href="../boost/random/lagged_fibonacci4423.html" title="Type definition lagged_fibonacci4423"><span class="identifier">lagged_fibonacci4423</span></a><span class="special">;</span> 3145 <span class="keyword">typedef</span> <a class="link" href="../boost/random/lagged_fibonacci_01_engine.html" title="Class template lagged_fibonacci_01_engine">lagged_fibonacci_01_engine</a><span class="special"><</span> <span class="keyword">double</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="number">9689</span><span class="special">,</span> <span class="number">5502</span> <span class="special">></span> <a class="link" href="../boost/random/lagged_fibonacci9689.html" title="Type definition lagged_fibonacci9689"><span class="identifier">lagged_fibonacci9689</span></a><span class="special">;</span> 3146 <span class="keyword">typedef</span> <a class="link" href="../boost/random/lagged_fibonacci_01_engine.html" title="Class template lagged_fibonacci_01_engine">lagged_fibonacci_01_engine</a><span class="special"><</span> <span class="keyword">double</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="number">19937</span><span class="special">,</span> <span class="number">9842</span> <span class="special">></span> <a class="link" href="../boost/random/lagged_fibonacci19937.html" title="Type definition lagged_fibonacci19937"><span class="identifier">lagged_fibonacci19937</span></a><span class="special">;</span> 3147 <span class="keyword">typedef</span> <a class="link" href="../boost/random/lagged_fibonacci_01_engine.html" title="Class template lagged_fibonacci_01_engine">lagged_fibonacci_01_engine</a><span class="special"><</span> <span class="keyword">double</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="number">23209</span><span class="special">,</span> <span class="number">13470</span> <span class="special">></span> <a class="link" href="../boost/random/lagged_fibonacci23209.html" title="Type definition lagged_fibonacci23209"><span class="identifier">lagged_fibonacci23209</span></a><span class="special">;</span> 3148 <span class="keyword">typedef</span> <a class="link" href="../boost/random/lagged_fibonacci_01_engine.html" title="Class template lagged_fibonacci_01_engine">lagged_fibonacci_01_engine</a><span class="special"><</span> <span class="keyword">double</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="number">44497</span><span class="special">,</span> <span class="number">21034</span> <span class="special">></span> <a class="link" href="../boost/random/lagged_fibonacci44497.html" title="Type definition lagged_fibonacci44497"><span class="identifier">lagged_fibonacci44497</span></a><span class="special">;</span> 3149 <span class="special">}</span> 3150<span class="special">}</span></pre> 3151</div> 3152<div class="section"> 3153<div class="titlepage"><div><div><h4 class="title"> 3154<a name="header.boost.random.laplace_distribution_hpp"></a>Header <<a href="../../../boost/random/laplace_distribution.hpp" target="_top">boost/random/laplace_distribution.hpp</a>></h4></div></div></div> 3155<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3156 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3157 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/laplace_distribution.html" title="Class template laplace_distribution">laplace_distribution</a><span class="special">;</span> 3158 <span class="special">}</span> 3159<span class="special">}</span></pre> 3160</div> 3161<div class="section"> 3162<div class="titlepage"><div><div><h4 class="title"> 3163<a name="header.boost.random.linear_congruential_hpp"></a>Header <<a href="../../../boost/random/linear_congruential.hpp" target="_top">boost/random/linear_congruential.hpp</a>></h4></div></div></div> 3164<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3165 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3166 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> IntType<span class="special">,</span> <span class="identifier">IntType</span> a<span class="special">,</span> <span class="identifier">IntType</span> c<span class="special">,</span> <span class="identifier">IntType</span> m<span class="special">></span> 3167 <span class="keyword">class</span> <a class="link" href="../boost/random/linear_congruential_engine.html" title="Class template linear_congruential_engine">linear_congruential_engine</a><span class="special">;</span> 3168 <span class="keyword">class</span> <a class="link" href="../boost/random/rand48.html" title="Class rand48">rand48</a><span class="special">;</span> 3169 <span class="keyword">typedef</span> <a class="link" href="../boost/random/linear_congruential_engine.html" title="Class template linear_congruential_engine">linear_congruential_engine</a><span class="special"><</span> <span class="identifier">uint32_t</span><span class="special">,</span> <span class="number">16807</span><span class="special">,</span> <span class="number">0</span><span class="special">,</span> <span class="number">2147483647</span> <span class="special">></span> <a class="link" href="../boost/random/minstd_rand0.html" title="Type definition minstd_rand0"><span class="identifier">minstd_rand0</span></a><span class="special">;</span> 3170 <span class="keyword">typedef</span> <a class="link" href="../boost/random/linear_congruential_engine.html" title="Class template linear_congruential_engine">linear_congruential_engine</a><span class="special"><</span> <span class="identifier">uint32_t</span><span class="special">,</span> <span class="number">48271</span><span class="special">,</span> <span class="number">0</span><span class="special">,</span> <span class="number">2147483647</span> <span class="special">></span> <a class="link" href="../boost/random/minstd_rand.html" title="Type definition minstd_rand"><span class="identifier">minstd_rand</span></a><span class="special">;</span> 3171 <span class="special">}</span> 3172<span class="special">}</span></pre> 3173</div> 3174<div class="section"> 3175<div class="titlepage"><div><div><h4 class="title"> 3176<a name="header.boost.random.linear_feedback_shift_hpp"></a>Header <<a href="../../../boost/random/linear_feedback_shift.hpp" target="_top">boost/random/linear_feedback_shift.hpp</a>></h4></div></div></div> 3177<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3178 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3179 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> UIntType<span class="special">,</span> <span class="keyword">int</span> w<span class="special">,</span> <span class="keyword">int</span> k<span class="special">,</span> <span class="keyword">int</span> q<span class="special">,</span> <span class="keyword">int</span> s<span class="special">></span> 3180 <span class="keyword">class</span> <a class="link" href="../boost/random/linear_1_3_34_5_6_24_1_1_1.html" title="Class template linear_feedback_shift_engine">linear_feedback_shift_engine</a><span class="special">;</span> 3181 <span class="special">}</span> 3182<span class="special">}</span></pre> 3183</div> 3184<div class="section"> 3185<div class="titlepage"><div><div><h4 class="title"> 3186<a name="header.boost.random.lognormal_distribution_hpp"></a>Header <<a href="../../../boost/random/lognormal_distribution.hpp" target="_top">boost/random/lognormal_distribution.hpp</a>></h4></div></div></div> 3187<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3188 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3189 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/lognormal_distribution.html" title="Class template lognormal_distribution">lognormal_distribution</a><span class="special">;</span> 3190 <span class="special">}</span> 3191<span class="special">}</span></pre> 3192</div> 3193<div class="section"> 3194<div class="titlepage"><div><div><h4 class="title"> 3195<a name="header.boost.random.mersenne_twister_hpp"></a>Header <<a href="../../../boost/random/mersenne_twister.hpp" target="_top">boost/random/mersenne_twister.hpp</a>></h4></div></div></div> 3196<pre class="synopsis"> 3197 3198<a class="link" href="../BOOST_RAND_1_3_34_5_6_26_2.html" title="Macro BOOST_RANDOM_MERSENNE_TWISTER_DISCARD_THRESHOLD">BOOST_RANDOM_MERSENNE_TWISTER_DISCARD_THRESHOLD</a></pre> 3199<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3200 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3201 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> UIntType<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> w<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> n<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> m<span class="special">,</span> 3202 <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> r<span class="special">,</span> <span class="identifier">UIntType</span> a<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> u<span class="special">,</span> <span class="identifier">UIntType</span> d<span class="special">,</span> 3203 <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> s<span class="special">,</span> <span class="identifier">UIntType</span> b<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> t<span class="special">,</span> <span class="identifier">UIntType</span> c<span class="special">,</span> 3204 <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> l<span class="special">,</span> <span class="identifier">UIntType</span> f<span class="special">></span> 3205 <span class="keyword">class</span> <a class="link" href="../boost/random/mersenne_twister_engine.html" title="Class template mersenne_twister_engine">mersenne_twister_engine</a><span class="special">;</span> 3206 <span class="keyword">typedef</span> <a class="link" href="../boost/random/mersenne_twister_engine.html" title="Class template mersenne_twister_engine">mersenne_twister_engine</a><span class="special"><</span> <span class="identifier">uint32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="number">351</span><span class="special">,</span> <span class="number">175</span><span class="special">,</span> <span class="number">19</span><span class="special">,</span> <span class="number">0xccab8ee7</span><span class="special">,</span> <span class="number">11</span><span class="special">,</span> <span class="number">0xffffffff</span><span class="special">,</span> <span class="number">7</span><span class="special">,</span> <span class="number">0x31b6ab00</span><span class="special">,</span> <span class="number">15</span><span class="special">,</span> <span class="number">0xffe50000</span><span class="special">,</span> <span class="number">17</span><span class="special">,</span> <span class="number">1812433253</span> <span class="special">></span> <a class="link" href="../boost/random/mt11213b.html" title="Type definition mt11213b"><span class="identifier">mt11213b</span></a><span class="special">;</span> 3207 <span class="keyword">typedef</span> <a class="link" href="../boost/random/mersenne_twister_engine.html" title="Class template mersenne_twister_engine">mersenne_twister_engine</a><span class="special"><</span> <span class="identifier">uint32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="number">624</span><span class="special">,</span> <span class="number">397</span><span class="special">,</span> <span class="number">31</span><span class="special">,</span> <span class="number">0x9908b0df</span><span class="special">,</span> <span class="number">11</span><span class="special">,</span> <span class="number">0xffffffff</span><span class="special">,</span> <span class="number">7</span><span class="special">,</span> <span class="number">0x9d2c5680</span><span class="special">,</span> <span class="number">15</span><span class="special">,</span> <span class="number">0xefc60000</span><span class="special">,</span> <span class="number">18</span><span class="special">,</span> <span class="number">1812433253</span> <span class="special">></span> <a class="link" href="../boost/random/mt19937.html" title="Type definition mt19937"><span class="identifier">mt19937</span></a><span class="special">;</span> 3208 <span class="keyword">typedef</span> <a class="link" href="../boost/random/mersenne_twister_engine.html" title="Class template mersenne_twister_engine">mersenne_twister_engine</a><span class="special"><</span> <span class="identifier">uint64_t</span><span class="special">,</span> <span class="number">64</span><span class="special">,</span> <span class="number">312</span><span class="special">,</span> <span class="number">156</span><span class="special">,</span> <span class="number">31</span><span class="special">,</span> <span class="number">0xb5026f5aa96619e9ull</span><span class="special">,</span> <span class="number">29</span><span class="special">,</span> <span class="number">0x5555555555555555ull</span><span class="special">,</span> <span class="number">17</span><span class="special">,</span> <span class="number">0x71d67fffeda60000ull</span><span class="special">,</span> <span class="number">37</span><span class="special">,</span> <span class="number">0xfff7eee000000000ull</span><span class="special">,</span> <span class="number">43</span><span class="special">,</span> <span class="number">6364136223846793005ull</span> <span class="special">></span> <a name="boost.random.mt19937_64"></a><span class="identifier">mt19937_64</span><span class="special">;</span> 3209 <span class="special">}</span> 3210<span class="special">}</span></pre> 3211</div> 3212<div class="section"> 3213<div class="titlepage"><div><div><h4 class="title"> 3214<a name="header.boost.random.negative_binomial_distribution_hpp"></a>Header <<a href="../../../boost/random/negative_binomial_distribution.hpp" target="_top">boost/random/negative_binomial_distribution.hpp</a>></h4></div></div></div> 3215<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3216 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3217 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> IntType <span class="special">=</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> 3218 <span class="keyword">class</span> <a class="link" href="../boost/random/negati_1_3_34_5_6_27_1_1_1.html" title="Class template negative_binomial_distribution">negative_binomial_distribution</a><span class="special">;</span> 3219 <span class="special">}</span> 3220<span class="special">}</span></pre> 3221</div> 3222<div class="section"> 3223<div class="titlepage"><div><div><h4 class="title"> 3224<a name="header.boost.random.niederreiter_base2_hpp"></a>Header <<a href="../../../boost/random/niederreiter_base2.hpp" target="_top">boost/random/niederreiter_base2.hpp</a>></h4></div></div></div> 3225<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3226 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3227 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> UIntType<span class="special">,</span> <span class="keyword">unsigned</span> w<span class="special">,</span> 3228 <span class="keyword">typename</span> Nb2Table <span class="special">=</span> <span class="identifier">default_niederreiter_base2_table</span><span class="special">></span> 3229 <span class="keyword">class</span> <a class="link" href="../boost/random/niederreiter_base2_engine.html" title="Class template niederreiter_base2_engine">niederreiter_base2_engine</a><span class="special">;</span> 3230 <span class="keyword">typedef</span> <a class="link" href="../boost/random/niederreiter_base2_engine.html" title="Class template niederreiter_base2_engine">niederreiter_base2_engine</a><span class="special"><</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">64u</span><span class="special">,</span> <span class="identifier">default_niederreiter_base2_table</span> <span class="special">></span> <a class="link" href="../boost/random/niederreiter_base2.html" title="Type definition niederreiter_base2"><span class="identifier">niederreiter_base2</span></a><span class="special">;</span> 3231 <span class="special">}</span> 3232<span class="special">}</span></pre> 3233</div> 3234<div class="section"> 3235<div class="titlepage"><div><div><h4 class="title"> 3236<a name="header.boost.random.non_central_chi_squared_distribution_hpp"></a>Header <<a href="../../../boost/random/non_central_chi_squared_distribution.hpp" target="_top">boost/random/non_central_chi_squared_distribution.hpp</a>></h4></div></div></div> 3237<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3238 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3239 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> 3240 <span class="keyword">class</span> <a class="link" href="../boost/random/non_ce_1_3_34_5_6_29_1_1_1.html" title="Class template non_central_chi_squared_distribution">non_central_chi_squared_distribution</a><span class="special">;</span> 3241 <span class="special">}</span> 3242<span class="special">}</span></pre> 3243</div> 3244<div class="section"> 3245<div class="titlepage"><div><div><h4 class="title"> 3246<a name="header.boost.random.normal_distribution_hpp"></a>Header <<a href="../../../boost/random/normal_distribution.hpp" target="_top">boost/random/normal_distribution.hpp</a>></h4></div></div></div> 3247<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3248 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3249 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/normal_distribution.html" title="Class template normal_distribution">normal_distribution</a><span class="special">;</span> 3250 <span class="special">}</span> 3251<span class="special">}</span></pre> 3252</div> 3253<div class="section"> 3254<div class="titlepage"><div><div><h4 class="title"> 3255<a name="header.boost.random.piecewise_constant_distribution_hpp"></a>Header <<a href="../../../boost/random/piecewise_constant_distribution.hpp" target="_top">boost/random/piecewise_constant_distribution.hpp</a>></h4></div></div></div> 3256<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3257 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3258 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">,</span> <span class="keyword">typename</span> WeightType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> 3259 <span class="keyword">class</span> <a class="link" href="../boost/random/piecew_1_3_34_5_6_31_1_1_1.html" title="Class template piecewise_constant_distribution">piecewise_constant_distribution</a><span class="special">;</span> 3260 <span class="special">}</span> 3261<span class="special">}</span></pre> 3262</div> 3263<div class="section"> 3264<div class="titlepage"><div><div><h4 class="title"> 3265<a name="header.boost.random.piecewise_linear_distribution_hpp"></a>Header <<a href="../../../boost/random/piecewise_linear_distribution.hpp" target="_top">boost/random/piecewise_linear_distribution.hpp</a>></h4></div></div></div> 3266<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3267 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3268 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/piecew_1_3_34_5_6_32_1_1_1.html" title="Class template piecewise_linear_distribution">piecewise_linear_distribution</a><span class="special">;</span> 3269 <span class="special">}</span> 3270<span class="special">}</span></pre> 3271</div> 3272<div class="section"> 3273<div class="titlepage"><div><div><h4 class="title"> 3274<a name="header.boost.random.poisson_distribution_hpp"></a>Header <<a href="../../../boost/random/poisson_distribution.hpp" target="_top">boost/random/poisson_distribution.hpp</a>></h4></div></div></div> 3275<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3276 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3277 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> IntType <span class="special">=</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> 3278 <span class="keyword">class</span> <a class="link" href="../boost/random/poisson_distribution.html" title="Class template poisson_distribution">poisson_distribution</a><span class="special">;</span> 3279 <span class="special">}</span> 3280<span class="special">}</span></pre> 3281</div> 3282<div class="section"> 3283<div class="titlepage"><div><div><h4 class="title"> 3284<a name="header.boost.random.random_device_hpp"></a>Header <<a href="../../../boost/random/random_device.hpp" target="_top">boost/random/random_device.hpp</a>></h4></div></div></div> 3285<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3286 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3287 <span class="keyword">class</span> <a class="link" href="../boost/random/random_device.html" title="Class random_device">random_device</a><span class="special">;</span> 3288 <span class="special">}</span> 3289<span class="special">}</span></pre> 3290</div> 3291<div class="section"> 3292<div class="titlepage"><div><div><h4 class="title"> 3293<a name="header.boost.random.random_number_generator_hpp"></a>Header <<a href="../../../boost/random/random_number_generator.hpp" target="_top">boost/random/random_number_generator.hpp</a>></h4></div></div></div> 3294<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3295 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3296 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> URNG<span class="special">,</span> <span class="keyword">typename</span> IntType <span class="special">=</span> <span class="keyword">long</span><span class="special">></span> 3297 <span class="keyword">class</span> <a class="link" href="../boost/random/random_number_generator.html" title="Class template random_number_generator">random_number_generator</a><span class="special">;</span> 3298 <span class="special">}</span> 3299<span class="special">}</span></pre> 3300</div> 3301<div class="section"> 3302<div class="titlepage"><div><div><h4 class="title"> 3303<a name="header.boost.random.ranlux_hpp"></a>Header <<a href="../../../boost/random/ranlux.hpp" target="_top">boost/random/ranlux.hpp</a>></h4></div></div></div> 3304<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3305 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3306 <span class="keyword">typedef</span> <a class="link" href="../boost/random/subtract_with_carry_engine.html" title="Class template subtract_with_carry_engine">subtract_with_carry_engine</a><span class="special"><</span> <span class="identifier">uint32_t</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">24</span> <span class="special">></span> <a name="boost.random.ranlux_base"></a><span class="identifier">ranlux_base</span><span class="special">;</span> 3307 <span class="keyword">typedef</span> <a class="link" href="../boost/random/subtra_1_3_34_5_6_41_1_1_1.html" title="Class template subtract_with_carry_01_engine">subtract_with_carry_01_engine</a><span class="special"><</span> <span class="keyword">float</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">24</span> <span class="special">></span> <a name="boost.random.ranlux_base_01"></a><span class="identifier">ranlux_base_01</span><span class="special">;</span> 3308 <span class="keyword">typedef</span> <a class="link" href="../boost/random/subtra_1_3_34_5_6_41_1_1_1.html" title="Class template subtract_with_carry_01_engine">subtract_with_carry_01_engine</a><span class="special"><</span> <span class="keyword">double</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">24</span> <span class="special">></span> <a name="boost.random.ranlux64_base_01"></a><span class="identifier">ranlux64_base_01</span><span class="special">;</span> 3309 <span class="keyword">typedef</span> <a class="link" href="../boost/random/discard_block_engine.html" title="Class template discard_block_engine">discard_block_engine</a><span class="special"><</span> <a class="link" href="reference.html#boost.random.ranlux_base">ranlux_base</a><span class="special">,</span> <span class="number">223</span><span class="special">,</span> <span class="number">24</span> <span class="special">></span> <a class="link" href="../boost/random/ranlux3.html" title="Type definition ranlux3"><span class="identifier">ranlux3</span></a><span class="special">;</span> 3310 <span class="keyword">typedef</span> <a class="link" href="../boost/random/discard_block_engine.html" title="Class template discard_block_engine">discard_block_engine</a><span class="special"><</span> <a class="link" href="reference.html#boost.random.ranlux_base">ranlux_base</a><span class="special">,</span> <span class="number">389</span><span class="special">,</span> <span class="number">24</span> <span class="special">></span> <a class="link" href="../boost/random/ranlux4.html" title="Type definition ranlux4"><span class="identifier">ranlux4</span></a><span class="special">;</span> 3311 <span class="keyword">typedef</span> <a class="link" href="../boost/random/discard_block_engine.html" title="Class template discard_block_engine">discard_block_engine</a><span class="special"><</span> <a class="link" href="reference.html#boost.random.ranlux_base_01">ranlux_base_01</a><span class="special">,</span> <span class="number">223</span><span class="special">,</span> <span class="number">24</span> <span class="special">></span> <a class="link" href="../boost/random/ranlux3_01.html" title="Type definition ranlux3_01"><span class="identifier">ranlux3_01</span></a><span class="special">;</span> 3312 <span class="keyword">typedef</span> <a class="link" href="../boost/random/discard_block_engine.html" title="Class template discard_block_engine">discard_block_engine</a><span class="special"><</span> <a class="link" href="reference.html#boost.random.ranlux_base_01">ranlux_base_01</a><span class="special">,</span> <span class="number">389</span><span class="special">,</span> <span class="number">24</span> <span class="special">></span> <a class="link" href="../boost/random/ranlux4_01.html" title="Type definition ranlux4_01"><span class="identifier">ranlux4_01</span></a><span class="special">;</span> 3313 <span class="keyword">typedef</span> <a class="link" href="../boost/random/discard_block_engine.html" title="Class template discard_block_engine">discard_block_engine</a><span class="special"><</span> <a class="link" href="reference.html#boost.random.ranlux64_base_01">ranlux64_base_01</a><span class="special">,</span> <span class="number">223</span><span class="special">,</span> <span class="number">24</span> <span class="special">></span> <a class="link" href="../boost/random/ranlux64_3_01.html" title="Type definition ranlux64_3_01"><span class="identifier">ranlux64_3_01</span></a><span class="special">;</span> 3314 <span class="keyword">typedef</span> <a class="link" href="../boost/random/discard_block_engine.html" title="Class template discard_block_engine">discard_block_engine</a><span class="special"><</span> <a class="link" href="reference.html#boost.random.ranlux64_base_01">ranlux64_base_01</a><span class="special">,</span> <span class="number">389</span><span class="special">,</span> <span class="number">24</span> <span class="special">></span> <a class="link" href="../boost/random/ranlux64_4_01.html" title="Type definition ranlux64_4_01"><span class="identifier">ranlux64_4_01</span></a><span class="special">;</span> 3315 <span class="keyword">typedef</span> <a class="link" href="../boost/random/subtract_with_carry_engine.html" title="Class template subtract_with_carry_engine">subtract_with_carry_engine</a><span class="special"><</span> <span class="identifier">uint64_t</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">24</span> <span class="special">></span> <a name="boost.random.ranlux64_base"></a><span class="identifier">ranlux64_base</span><span class="special">;</span> 3316 <span class="keyword">typedef</span> <a class="link" href="../boost/random/discard_block_engine.html" title="Class template discard_block_engine">discard_block_engine</a><span class="special"><</span> <a class="link" href="reference.html#boost.random.ranlux64_base">ranlux64_base</a><span class="special">,</span> <span class="number">223</span><span class="special">,</span> <span class="number">24</span> <span class="special">></span> <a class="link" href="../boost/random/ranlux64_3.html" title="Type definition ranlux64_3"><span class="identifier">ranlux64_3</span></a><span class="special">;</span> 3317 <span class="keyword">typedef</span> <a class="link" href="../boost/random/discard_block_engine.html" title="Class template discard_block_engine">discard_block_engine</a><span class="special"><</span> <a class="link" href="reference.html#boost.random.ranlux64_base">ranlux64_base</a><span class="special">,</span> <span class="number">389</span><span class="special">,</span> <span class="number">24</span> <span class="special">></span> <a class="link" href="../boost/random/ranlux64_4.html" title="Type definition ranlux64_4"><span class="identifier">ranlux64_4</span></a><span class="special">;</span> 3318 <span class="keyword">typedef</span> <a class="link" href="../boost/random/subtract_with_carry_engine.html" title="Class template subtract_with_carry_engine">subtract_with_carry_engine</a><span class="special"><</span> <span class="identifier">uint32_t</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">24</span> <span class="special">></span> <a name="boost.random.ranlux24_base"></a><span class="identifier">ranlux24_base</span><span class="special">;</span> 3319 <span class="keyword">typedef</span> <a class="link" href="../boost/random/subtract_with_carry_engine.html" title="Class template subtract_with_carry_engine">subtract_with_carry_engine</a><span class="special"><</span> <span class="identifier">uint64_t</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="number">5</span><span class="special">,</span> <span class="number">12</span> <span class="special">></span> <a name="boost.random.ranlux48_base"></a><span class="identifier">ranlux48_base</span><span class="special">;</span> 3320 <span class="keyword">typedef</span> <a class="link" href="../boost/random/discard_block_engine.html" title="Class template discard_block_engine">discard_block_engine</a><span class="special"><</span> <a class="link" href="reference.html#boost.random.ranlux24_base">ranlux24_base</a><span class="special">,</span> <span class="number">223</span><span class="special">,</span> <span class="number">23</span> <span class="special">></span> <a name="boost.random.ranlux24"></a><span class="identifier">ranlux24</span><span class="special">;</span> 3321 <span class="keyword">typedef</span> <a class="link" href="../boost/random/discard_block_engine.html" title="Class template discard_block_engine">discard_block_engine</a><span class="special"><</span> <a class="link" href="reference.html#boost.random.ranlux48_base">ranlux48_base</a><span class="special">,</span> <span class="number">389</span><span class="special">,</span> <span class="number">11</span> <span class="special">></span> <a name="boost.random.ranlux48"></a><span class="identifier">ranlux48</span><span class="special">;</span> 3322 <span class="special">}</span> 3323<span class="special">}</span></pre> 3324</div> 3325<div class="section"> 3326<div class="titlepage"><div><div><h4 class="title"> 3327<a name="header.boost.random.seed_seq_hpp"></a>Header <<a href="../../../boost/random/seed_seq.hpp" target="_top">boost/random/seed_seq.hpp</a>></h4></div></div></div> 3328<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3329 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3330 <span class="keyword">class</span> <a class="link" href="../boost/random/seed_seq.html" title="Class seed_seq">seed_seq</a><span class="special">;</span> 3331 <span class="special">}</span> 3332<span class="special">}</span></pre> 3333</div> 3334<div class="section"> 3335<div class="titlepage"><div><div><h4 class="title"> 3336<a name="header.boost.random.shuffle_order_hpp"></a>Header <<a href="../../../boost/random/shuffle_order.hpp" target="_top">boost/random/shuffle_order.hpp</a>></h4></div></div></div> 3337<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3338 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3339 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> UniformRandomNumberGenerator<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> k<span class="special">></span> 3340 <span class="keyword">class</span> <a class="link" href="../boost/random/shuffle_order_engine.html" title="Class template shuffle_order_engine">shuffle_order_engine</a><span class="special">;</span> 3341 <span class="keyword">typedef</span> <a class="link" href="../boost/random/shuffle_order_engine.html" title="Class template shuffle_order_engine">shuffle_order_engine</a><span class="special"><</span> <a class="link" href="../boost/random/linear_congruential_engine.html" title="Class template linear_congruential_engine">linear_congruential_engine</a><span class="special"><</span> <span class="identifier">uint32_t</span><span class="special">,</span> <span class="number">1366</span><span class="special">,</span> <span class="number">150889</span><span class="special">,</span> <span class="number">714025</span> <span class="special">></span><span class="special">,</span> <span class="number">97</span> <span class="special">></span> <a class="link" href="../boost/random/kreutzer1986.html" title="Type definition kreutzer1986"><span class="identifier">kreutzer1986</span></a><span class="special">;</span> 3342 <span class="keyword">typedef</span> <a class="link" href="../boost/random/shuffle_order_engine.html" title="Class template shuffle_order_engine">shuffle_order_engine</a><span class="special"><</span> <a class="link" href="../boost/random/minstd_rand0.html" title="Type definition minstd_rand0">minstd_rand0</a><span class="special">,</span> <span class="number">256</span> <span class="special">></span> <a class="link" href="../boost/random/knuth_b.html" title="Type definition knuth_b"><span class="identifier">knuth_b</span></a><span class="special">;</span> 3343 <span class="special">}</span> 3344<span class="special">}</span></pre> 3345</div> 3346<div class="section"> 3347<div class="titlepage"><div><div><h4 class="title"> 3348<a name="header.boost.random.sobol_hpp"></a>Header <<a href="../../../boost/random/sobol.hpp" target="_top">boost/random/sobol.hpp</a>></h4></div></div></div> 3349<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3350 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3351 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> UIntType<span class="special">,</span> <span class="keyword">unsigned</span> w<span class="special">,</span> 3352 <span class="keyword">typename</span> SobolTables <span class="special">=</span> <span class="identifier">default_sobol_table</span><span class="special">></span> 3353 <span class="keyword">class</span> <a class="link" href="../boost/random/sobol_engine.html" title="Class template sobol_engine">sobol_engine</a><span class="special">;</span> 3354 <span class="keyword">typedef</span> <a class="link" href="../boost/random/sobol_engine.html" title="Class template sobol_engine">sobol_engine</a><span class="special"><</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least64_t</span><span class="special">,</span> <span class="number">64u</span><span class="special">,</span> <span class="identifier">default_sobol_table</span> <span class="special">></span> <a class="link" href="../boost/random/sobol.html" title="Type definition sobol"><span class="identifier">sobol</span></a><span class="special">;</span> 3355 <span class="special">}</span> 3356<span class="special">}</span></pre> 3357</div> 3358<div class="section"> 3359<div class="titlepage"><div><div><h4 class="title"> 3360<a name="header.boost.random.student_t_distribution_hpp"></a>Header <<a href="../../../boost/random/student_t_distribution.hpp" target="_top">boost/random/student_t_distribution.hpp</a>></h4></div></div></div> 3361<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3362 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3363 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/student_t_distribution.html" title="Class template student_t_distribution">student_t_distribution</a><span class="special">;</span> 3364 <span class="special">}</span> 3365<span class="special">}</span></pre> 3366</div> 3367<div class="section"> 3368<div class="titlepage"><div><div><h4 class="title"> 3369<a name="header.boost.random.subtract_with_carry_hpp"></a>Header <<a href="../../../boost/random/subtract_with_carry.hpp" target="_top">boost/random/subtract_with_carry.hpp</a>></h4></div></div></div> 3370<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3371 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3372 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> w<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> s<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> r<span class="special">></span> 3373 <span class="keyword">class</span> <a class="link" href="../boost/random/subtra_1_3_34_5_6_41_1_1_1.html" title="Class template subtract_with_carry_01_engine">subtract_with_carry_01_engine</a><span class="special">;</span> 3374 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> IntType<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> w<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> s<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> r<span class="special">></span> 3375 <span class="keyword">class</span> <a class="link" href="../boost/random/subtract_with_carry_engine.html" title="Class template subtract_with_carry_engine">subtract_with_carry_engine</a><span class="special">;</span> 3376 <span class="special">}</span> 3377<span class="special">}</span></pre> 3378</div> 3379<div class="section"> 3380<div class="titlepage"><div><div><h4 class="title"> 3381<a name="header.boost.random.taus88_hpp"></a>Header <<a href="../../../boost/random/taus88.hpp" target="_top">boost/random/taus88.hpp</a>></h4></div></div></div> 3382<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3383 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3384 <span class="keyword">typedef</span> <a class="link" href="../boost/random/xor_combine_engine.html" title="Class template xor_combine_engine">xor_combine_engine</a><span class="special"><</span> <a class="link" href="../boost/random/xor_combine_engine.html" title="Class template xor_combine_engine">xor_combine_engine</a><span class="special"><</span> <a class="link" href="../boost/random/linear_1_3_34_5_6_24_1_1_1.html" title="Class template linear_feedback_shift_engine">linear_feedback_shift_engine</a><span class="special"><</span> <span class="identifier">uint32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="number">31</span><span class="special">,</span> <span class="number">13</span><span class="special">,</span> <span class="number">12</span> <span class="special">></span><span class="special">,</span> <span class="number">0</span><span class="special">,</span> <a class="link" href="../boost/random/linear_1_3_34_5_6_24_1_1_1.html" title="Class template linear_feedback_shift_engine">linear_feedback_shift_engine</a><span class="special"><</span> <span class="identifier">uint32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="number">29</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="number">4</span> <span class="special">></span><span class="special">,</span> <span class="number">0</span> <span class="special">></span><span class="special">,</span> <span class="number">0</span><span class="special">,</span> <a class="link" href="../boost/random/linear_1_3_34_5_6_24_1_1_1.html" title="Class template linear_feedback_shift_engine">linear_feedback_shift_engine</a><span class="special"><</span> <span class="identifier">uint32_t</span><span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="number">28</span><span class="special">,</span> <span class="number">3</span><span class="special">,</span> <span class="number">17</span> <span class="special">></span><span class="special">,</span> <span class="number">0</span> <span class="special">></span> <a class="link" href="../boost/random/taus88.html" title="Type definition taus88"><span class="identifier">taus88</span></a><span class="special">;</span> 3385 <span class="special">}</span> 3386<span class="special">}</span></pre> 3387</div> 3388<div class="section"> 3389<div class="titlepage"><div><div><h4 class="title"> 3390<a name="header.boost.random.traits_hpp"></a>Header <<a href="../../../boost/random/traits.hpp" target="_top">boost/random/traits.hpp</a>></h4></div></div></div> 3391<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3392 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3393 <span class="keyword">namespace</span> <span class="identifier">traits</span> <span class="special">{</span> 3394 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">struct</span> <a class="link" href="../boost/random/traits/is_integral.html" title="Struct template is_integral">is_integral</a><span class="special">;</span> 3395 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">struct</span> <a class="link" href="../boost/random/traits/is_signed.html" title="Struct template is_signed">is_signed</a><span class="special">;</span> 3396 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">struct</span> <a class="link" href="../boost/random/traits/make_unsigned.html" title="Struct template make_unsigned">make_unsigned</a><span class="special">;</span> 3397 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">struct</span> <a class="link" href="../boost/random/traits/make_unsigned_or_unbounded.html" title="Struct template make_unsigned_or_unbounded">make_unsigned_or_unbounded</a><span class="special">;</span> 3398 <span class="special">}</span> 3399 <span class="special">}</span> 3400<span class="special">}</span></pre> 3401</div> 3402<div class="section"> 3403<div class="titlepage"><div><div><h4 class="title"> 3404<a name="header.boost.random.triangle_distribution_hpp"></a>Header <<a href="../../../boost/random/triangle_distribution.hpp" target="_top">boost/random/triangle_distribution.hpp</a>></h4></div></div></div> 3405<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3406 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3407 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/triangle_distribution.html" title="Class template triangle_distribution">triangle_distribution</a><span class="special">;</span> 3408 <span class="special">}</span> 3409<span class="special">}</span></pre> 3410</div> 3411<div class="section"> 3412<div class="titlepage"><div><div><h4 class="title"> 3413<a name="header.boost.random.uniform_01_hpp"></a>Header <<a href="../../../boost/random/uniform_01.hpp" target="_top">boost/random/uniform_01.hpp</a>></h4></div></div></div> 3414<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3415 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3416 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/uniform_01.html" title="Class template uniform_01">uniform_01</a><span class="special">;</span> 3417 <span class="special">}</span> 3418<span class="special">}</span></pre> 3419</div> 3420<div class="section"> 3421<div class="titlepage"><div><div><h4 class="title"> 3422<a name="header.boost.random.uniform_int_distribution_hpp"></a>Header <<a href="../../../boost/random/uniform_int_distribution.hpp" target="_top">boost/random/uniform_int_distribution.hpp</a>></h4></div></div></div> 3423<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3424 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3425 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> IntType <span class="special">=</span> <span class="keyword">int</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/uniform_int_distribution.html" title="Class template uniform_int_distribution">uniform_int_distribution</a><span class="special">;</span> 3426 <span class="special">}</span> 3427<span class="special">}</span></pre> 3428</div> 3429<div class="section"> 3430<div class="titlepage"><div><div><h4 class="title"> 3431<a name="header.boost.random.uniform_on_sphere_hpp"></a>Header <<a href="../../../boost/random/uniform_on_sphere.hpp" target="_top">boost/random/uniform_on_sphere.hpp</a>></h4></div></div></div> 3432<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3433 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3434 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">,</span> 3435 <span class="keyword">typename</span> Cont <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">></span> <span class="special">></span> 3436 <span class="keyword">class</span> <a class="link" href="../boost/random/uniform_on_sphere.html" title="Class template uniform_on_sphere">uniform_on_sphere</a><span class="special">;</span> 3437 <span class="special">}</span> 3438<span class="special">}</span></pre> 3439</div> 3440<div class="section"> 3441<div class="titlepage"><div><div><h4 class="title"> 3442<a name="header.boost.random.uniform_real_distribution_hpp"></a>Header <<a href="../../../boost/random/uniform_real_distribution.hpp" target="_top">boost/random/uniform_real_distribution.hpp</a>></h4></div></div></div> 3443<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3444 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3445 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/uniform_real_distribution.html" title="Class template uniform_real_distribution">uniform_real_distribution</a><span class="special">;</span> 3446 <span class="special">}</span> 3447<span class="special">}</span></pre> 3448</div> 3449<div class="section"> 3450<div class="titlepage"><div><div><h4 class="title"> 3451<a name="header.boost.random.uniform_smallint_hpp"></a>Header <<a href="../../../boost/random/uniform_smallint.hpp" target="_top">boost/random/uniform_smallint.hpp</a>></h4></div></div></div> 3452<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3453 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3454 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> IntType <span class="special">=</span> <span class="keyword">int</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/uniform_smallint.html" title="Class template uniform_smallint">uniform_smallint</a><span class="special">;</span> 3455 <span class="special">}</span> 3456<span class="special">}</span></pre> 3457</div> 3458<div class="section"> 3459<div class="titlepage"><div><div><h4 class="title"> 3460<a name="header.boost.random.variate_generator_hpp"></a>Header <<a href="../../../boost/random/variate_generator.hpp" target="_top">boost/random/variate_generator.hpp</a>></h4></div></div></div> 3461<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3462 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Engine<span class="special">,</span> <span class="keyword">typename</span> Distribution<span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/variate_generator.html" title="Class template variate_generator">variate_generator</a><span class="special">;</span> 3463<span class="special">}</span></pre> 3464</div> 3465<div class="section"> 3466<div class="titlepage"><div><div><h4 class="title"> 3467<a name="header.boost.random.weibull_distribution_hpp"></a>Header <<a href="../../../boost/random/weibull_distribution.hpp" target="_top">boost/random/weibull_distribution.hpp</a>></h4></div></div></div> 3468<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3469 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3470 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> RealType <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/random/weibull_distribution.html" title="Class template weibull_distribution">weibull_distribution</a><span class="special">;</span> 3471 <span class="special">}</span> 3472<span class="special">}</span></pre> 3473</div> 3474<div class="section"> 3475<div class="titlepage"><div><div><h4 class="title"> 3476<a name="header.boost.random.xor_combine_hpp"></a>Header <<a href="../../../boost/random/xor_combine.hpp" target="_top">boost/random/xor_combine.hpp</a>></h4></div></div></div> 3477<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 3478 <span class="keyword">namespace</span> <span class="identifier">random</span> <span class="special">{</span> 3479 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> URNG1<span class="special">,</span> <span class="keyword">int</span> s1<span class="special">,</span> <span class="keyword">typename</span> URNG2<span class="special">,</span> <span class="keyword">int</span> s2<span class="special">></span> 3480 <span class="keyword">class</span> <a class="link" href="../boost/random/xor_combine_engine.html" title="Class template xor_combine_engine">xor_combine_engine</a><span class="special">;</span> 3481 <span class="special">}</span> 3482<span class="special">}</span></pre> 3483</div> 3484</div> 3485</div> 3486<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 3487<td align="left"></td> 3488<td align="right"><div class="copyright-footer">Copyright © 2000-2005 Jens Maurer<br>Copyright © 2009, 2010 Steven Watanabe<p> 3489 Distributed under the Boost Software License, Version 1.0. (See accompanying 3490 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>) 3491 </p> 3492</div></td> 3493</tr></table> 3494<hr> 3495<div class="spirit-nav"> 3496<a accesskey="p" href="tutorial.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_random.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../boost/random/additive_combine_engine.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> 3497</div> 3498</body> 3499</html> 3500