[/
 / Copyright (c) 2009 Steven Watanabe
 /
 / Distributed under the Boost Software License, Version 1.0. (See
 / accompanying file LICENSE_1_0.txt or copy at
 / http://www.boost.org/LICENSE_1_0.txt)
]

In addition to the [link boost_random.reference.generators random number generators],
this library provides distribution functions which map one distribution
(often a uniform distribution provided by some generator) to another.

Usually, there are several possible implementations of any given mapping.
Often, there is a choice between using more space, more invocations of the
underlying source of random numbers, or more time-consuming arithmetic such
as trigonometric functions. This interface description does not mandate any
specific implementation. However, implementations which cannot reach certain
values of the specified distribution or otherwise do not converge
statistically to it are not acceptable.

[table distributions
  [[distribution] [explanation] [example]]
  [[__uniform_smallint] [discrete uniform distribution on a small set of integers
                         (much smaller than the range of the underlying
                         generator)]
                        [drawing from an urn]]
  [[__uniform_int] [discrete uniform distribution on a set of integers; the
                    underlying generator may be called several times to gather
                    enough randomness for the output]
                   [drawing from an urn]]
  [[__uniform_01] [continuous uniform distribution on the range [0,1);
                   important basis for other distributions]
                  [-]]
  [[__uniform_real] [continuous uniform distribution on some range [min, max) of
                     real numbers]
                    [for the range [0, 2pi): randomly dropping a stick and
                     measuring its angle in radians (assuming the angle is
                     uniformly distributed)]]
  [[__bernoulli_distribution] [Bernoulli experiment: discrete boolean valued
                               distribution with configurable probability]
                              [tossing a coin (p=0.5)]]
  [[__binomial_distribution] [counts outcomes of repeated Bernoulli
                              experiments]
                             [tossing a coin 20 times and counting how many
                                front sides are shown]]
  [[__cauchy_distribution][cauchy distribution][-]]
  [[__gamma_distribution][gamma distribution][-]]
  [[__poisson_distribution][poisson distribution]
                           [counting the number of alpha particles emitted
                            by radioactive matter in a fixed period of time]]
  [[__geometric_distribution] [measures distance between outcomes of repeated
                             Bernoulli experiments]
                            [throwing a die several times and counting the
                             number of tries until a "6" appears for the
                             first time]]
  [[__triangle_distribution] [triangle distribution] [-]]
  [[__exponential_distribution] [exponential distribution]
                                [measuring the inter-arrival time of alpha
                                 particles emitted by radioactive matter]]
  [[__normal_distribution] [counts outcomes of (infinitely) repeated Bernoulli
                            experiments]
                           [tossing a coin 10000 times and counting how many
                            front sides are shown]]
  [[__lognormal_distribution] [lognormal distribution (sometimes used in
                               simulations)]
                              [measuring the job completion time of an assembly
                               line worker]]
  [[__uniform_on_sphere] [uniform distribution on a unit sphere of arbitrary
                          dimension]
                         [choosing a random point on Earth (assumed to be a
                          sphere) where to spend the next vacations]]
]
