$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r68822 - in trunk: boost/random libs/random/doc libs/random/example
From: steven_at_[hidden]
Date: 2011-02-12 22:29:04
Author: steven_watanabe
Date: 2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
New Revision: 68822
URL: http://svn.boost.org/trac/boost/changeset/68822
Log:
Sync the docs with the current library.
Text files modified: 
   trunk/boost/random/additive_combine.hpp                |     4 +                                       
   trunk/boost/random/bernoulli_distribution.hpp          |     3 -                                       
   trunk/boost/random/binomial_distribution.hpp           |     2                                         
   trunk/boost/random/cauchy_distribution.hpp             |     3 -                                       
   trunk/boost/random/chi_squared_distribution.hpp        |     2                                         
   trunk/boost/random/discard_block.hpp                   |     4 ++                                      
   trunk/boost/random/discrete_distribution.hpp           |     4 +-                                      
   trunk/boost/random/exponential_distribution.hpp        |     2 -                                       
   trunk/boost/random/geometric_distribution.hpp          |     6 ++                                      
   trunk/boost/random/independent_bits.hpp                |    10 +---                                    
   trunk/boost/random/inversive_congruential.hpp          |     2                                         
   trunk/boost/random/lagged_fibonacci.hpp                |    14 +++---                                  
   trunk/boost/random/linear_congruential.hpp             |     6 +-                                      
   trunk/boost/random/linear_feedback_shift.hpp           |     4 +-                                      
   trunk/boost/random/lognormal_distribution.hpp          |     8 +++-                                    
   trunk/boost/random/mersenne_twister.hpp                |     7 +--                                     
   trunk/boost/random/negative_binomial_distribution.hpp  |     2                                         
   trunk/boost/random/normal_distribution.hpp             |     5 --                                      
   trunk/boost/random/piecewise_constant_distribution.hpp |    11 -----                                   
   trunk/boost/random/piecewise_linear_distribution.hpp   |     7 ---                                     
   trunk/boost/random/poisson_distribution.hpp            |     2                                         
   trunk/boost/random/random_device.hpp                   |     2                                         
   trunk/boost/random/seed_seq.hpp                        |    18 +++++++++                               
   trunk/boost/random/shuffle_order.hpp                   |    12 +++++-                                  
   trunk/boost/random/student_t_distribution.hpp          |     2                                         
   trunk/boost/random/subtract_with_carry.hpp             |    30 ++++++++++-----                         
   trunk/boost/random/triangle_distribution.hpp           |     2                                         
   trunk/boost/random/uniform_01.hpp                      |     5 ++                                      
   trunk/boost/random/uniform_smallint.hpp                |     6 ++-                                     
   trunk/boost/random/variate_generator.hpp               |     3 -                                       
   trunk/boost/random/xor_combine.hpp                     |     2                                         
   trunk/libs/random/doc/Jamfile.v2                       |    41 +++++++++++++++-------                  
   trunk/libs/random/doc/concepts.qbk                     |    67 ++++++++----------------------------    
   trunk/libs/random/doc/distributions.qbk                |    55 +++++++++++++++++++++++------           
   trunk/libs/random/doc/random.qbk                       |    74 ++++++++++++++++++--------------------- 
   trunk/libs/random/example/die.cpp                      |    26 ++++---------                           
   trunk/libs/random/example/password.cpp                 |    12 ++---                                   
   trunk/libs/random/example/weighted_die.cpp             |    31 +++++++---------                        
   38 files changed, 253 insertions(+), 243 deletions(-)
Modified: trunk/boost/random/additive_combine.hpp
==============================================================================
--- trunk/boost/random/additive_combine.hpp	(original)
+++ trunk/boost/random/additive_combine.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -247,7 +247,8 @@
 const bool additive_combine_engine<MLCG1, MLCG2>::has_fixed_range;
 #endif
 
-/// \cond
+/// \cond show_deprecated
+
 /** Provided for backwards compatibility. */
 template<class MLCG1, class MLCG2, typename MLCG1::result_type val = 0>
 class additive_combine : public additive_combine_engine<MLCG1, MLCG2>
@@ -263,6 +264,7 @@
     template<class It>
     additive_combine(It& first, It last) : base_t(first, last) {}
 };
+
 /// \endcond
 
 /**
Modified: trunk/boost/random/bernoulli_distribution.hpp
==============================================================================
--- trunk/boost/random/bernoulli_distribution.hpp	(original)
+++ trunk/boost/random/bernoulli_distribution.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -185,10 +185,7 @@
     BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(bernoulli_distribution)
 
 private:
-
-    /// \cond
     RealType _p;
-    /// \endcond
 };
 
 } // namespace random
Modified: trunk/boost/random/binomial_distribution.hpp
==============================================================================
--- trunk/boost/random/binomial_distribution.hpp	(original)
+++ trunk/boost/random/binomial_distribution.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -236,7 +236,7 @@
 
 private:
 
-    /// @cond
+    /// @cond show_private
 
     template<class CharT, class Traits>
     void read(std::basic_istream<CharT, Traits>& is) {
Modified: trunk/boost/random/cauchy_distribution.hpp
==============================================================================
--- trunk/boost/random/cauchy_distribution.hpp	(original)
+++ trunk/boost/random/cauchy_distribution.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -201,11 +201,8 @@
     BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(cauchy_distribution)
 
 private:
-  
-    /// \cond
     RealType _median;
     RealType _sigma;
-    /// \endcond
 };
 
 } // namespace random
Modified: trunk/boost/random/chi_squared_distribution.hpp
==============================================================================
--- trunk/boost/random/chi_squared_distribution.hpp	(original)
+++ trunk/boost/random/chi_squared_distribution.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -187,7 +187,7 @@
 
 private:
 
-    /// @cond
+    /// @cond show_private
 
     template<class CharT, class Traits>
     void read(std::basic_istream<CharT, Traits>& is) {
Modified: trunk/boost/random/discard_block.hpp
==============================================================================
--- trunk/boost/random/discard_block.hpp	(original)
+++ trunk/boost/random/discard_block.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -202,6 +202,8 @@
 const std::size_t discard_block_engine<URNG, p, r>::used_block;
 #endif
 
+/// \cond \show_deprecated
+
 template<class URNG, int p, int r>
 class discard_block : public discard_block_engine<URNG, p, r>
 {
@@ -221,6 +223,8 @@
     { return (this->base().max)(); }
 };
 
+/// \endcond
+
 } // namespace random
 
 } // namespace boost
Modified: trunk/boost/random/discrete_distribution.hpp
==============================================================================
--- trunk/boost/random/discrete_distribution.hpp	(original)
+++ trunk/boost/random/discrete_distribution.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -146,7 +146,7 @@
         /** Returns true if the two sets of parameters are different. */
         BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
     private:
-        /// @cond
+        /// @cond show_private
         friend class discrete_distribution;
         explicit param_type(const discrete_distribution& dist)
           : _probabilities(dist.probabilities())
@@ -374,7 +374,7 @@
 
 private:
 
-    /// @cond
+    /// @cond show_private
 
     template<class Iter>
     void init(Iter first, Iter last, std::input_iterator_tag)
Modified: trunk/boost/random/exponential_distribution.hpp
==============================================================================
--- trunk/boost/random/exponential_distribution.hpp	(original)
+++ trunk/boost/random/exponential_distribution.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -170,9 +170,7 @@
     BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(exponential_distribution)
 
 private:
-    /// \cond
     result_type _lambda;
-    /// \endcond
 };
 
 } // namespace random
Modified: trunk/boost/random/geometric_distribution.hpp
==============================================================================
--- trunk/boost/random/geometric_distribution.hpp	(original)
+++ trunk/boost/random/geometric_distribution.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -199,7 +199,7 @@
 
 private:
 
-    /// \cond
+    /// \cond show_private
 
     void init()
     {
@@ -215,6 +215,8 @@
 
 } // namespace random
 
+/// \cond show_deprecated
+
 /**
  * Provided for backwards compatibility.  This class is
  * deprecated.  It provides the old behavior of geometric_distribution
@@ -258,6 +260,8 @@
     impl_type _impl;
 };
 
+/// \endcond
+
 } // namespace boost
 
 #endif // BOOST_RANDOM_GEOMETRIC_DISTRIBUTION_HPP
Modified: trunk/boost/random/independent_bits.hpp
==============================================================================
--- trunk/boost/random/independent_bits.hpp	(original)
+++ trunk/boost/random/independent_bits.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -84,14 +84,10 @@
     // Required by old Boost.Random concept
     BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
 
-    /**
-     * Returns the smallest value that the generator can produce
-     */
+    /** Returns the smallest value that the generator can produce. */
     static result_type min BOOST_PREVENT_MACRO_SUBSTITUTION ()
     { return 0; }
-    /**
-     * Returns the largest value that the generator can produce
-     */
+    /** Returns the largest value that the generator can produce. */
     static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
     { return boost::low_bits_mask_t<w>::sig_bits; }
 
@@ -265,7 +261,7 @@
 
 private:
 
-    /// \cond
+    /// \cond show_private
     typedef typename base_type::result_type base_result;
     typedef typename make_unsigned<base_result>::type base_unsigned;
 
Modified: trunk/boost/random/inversive_congruential.hpp
==============================================================================
--- trunk/boost/random/inversive_congruential.hpp	(original)
+++ trunk/boost/random/inversive_congruential.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -235,7 +235,7 @@
 const typename inversive_congruential_engine<IntType, a, b, p>::result_type inversive_congruential_engine<IntType, a, b, p>::default_seed;
 #endif
 
-/// \cond
+/// \cond show_deprecated
 
 // provided for backwards compatibility
 template<class IntType, IntType a, IntType b, IntType p, IntType val = 0>
Modified: trunk/boost/random/lagged_fibonacci.hpp
==============================================================================
--- trunk/boost/random/lagged_fibonacci.hpp	(original)
+++ trunk/boost/random/lagged_fibonacci.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -35,7 +35,7 @@
 namespace random {
 
 /** 
- * Instantiations of class template \lagged_fibonacci model a
+ * Instantiations of class template \lagged_fibonacci_engine model a
  * \pseudo_random_number_generator. It uses a lagged Fibonacci
  * algorithm with two lags @c p and @c q:
  * x(i) = x(i-p) + x(i-q) (mod 2<sup>w</sup>) with p > q.
@@ -184,7 +184,7 @@
     BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(lagged_fibonacci_engine)
 
 private:
-    /// \cond hide_private_members
+    /// \cond show_private
     void fill();
     /// \endcond
 
@@ -202,7 +202,7 @@
 const unsigned int lagged_fibonacci_engine<UIntType, w, p, q>::short_lag;
 #endif
 
-/// \cond
+/// \cond show_private
 
 template<class UIntType, int w, unsigned int p, unsigned int q>
 void lagged_fibonacci_engine<UIntType, w, p, q>::fill()
@@ -219,7 +219,7 @@
 
 /// \endcond
 
-/// \cond
+/// \cond show_deprecated
 
 // provided for backwards compatibility
 template<class UIntType, int w, unsigned int p, unsigned int q, UIntType v = 0>
@@ -432,7 +432,7 @@
     BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(lagged_fibonacci_01_engine)
 
 private:
-    /// \cond
+    /// \cond show_private
     void fill();
     static RealType modulus()
     {
@@ -457,7 +457,7 @@
 
 #endif
 
-/// \cond
+/// \cond show_private
 template<class RealType, int w, unsigned int p, unsigned int q>
 void lagged_fibonacci_01_engine<RealType, w, p, q>::fill()
 {
@@ -480,7 +480,7 @@
 }
 /// \endcond
 
-/// \cond
+/// \cond show_deprecated
 
 // provided for backwards compatibility
 template<class RealType, int w, unsigned int p, unsigned int q>
Modified: trunk/boost/random/linear_congruential.hpp
==============================================================================
--- trunk/boost/random/linear_congruential.hpp	(original)
+++ trunk/boost/random/linear_congruential.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -234,7 +234,7 @@
 
 private:
 
-    /// \cond
+    /// \cond show_private
 
     template<class CharT, class Traits>
     void read(std::basic_istream<CharT, Traits>& is) {
@@ -267,7 +267,7 @@
 const IntType linear_congruential_engine<IntType,a,c,m>::default_seed;
 #endif
 
-/// \cond
+/// \cond show_deprecated
 
 // provided for backwards compatibility
 template<class IntType, IntType a, IntType c, IntType m, IntType val = 0>
@@ -421,7 +421,7 @@
     friend bool operator!=(const rand48& x, const rand48& y)
     { return !(x == y); }
 private:
-    /// \cond
+    /// \cond show_private
     typedef random::linear_congruential_engine<uint64_t,
         // xxxxULL is not portable
         uint64_t(0xDEECE66DUL) | (uint64_t(0x5) << 32),
Modified: trunk/boost/random/linear_feedback_shift.hpp
==============================================================================
--- trunk/boost/random/linear_feedback_shift.hpp	(original)
+++ trunk/boost/random/linear_feedback_shift.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -170,7 +170,7 @@
     BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(linear_feedback_shift_engine)
 
 private:
-    /// \cond
+    /// \cond show_private
     static UIntType wordmask() { return boost::low_bits_mask_t<w>::sig_bits; }
     /// \endcond
     UIntType value;
@@ -192,7 +192,7 @@
 const UIntType linear_feedback_shift_engine<UIntType, w, k, q, s>::default_seed;
 #endif
 
-/// \cond
+/// \cond show_deprecated
 
 /** Provided for backwards compatibility. */
 template<class UIntType, int w, int k, int q, int s, UIntType v = 0>
Modified: trunk/boost/random/lognormal_distribution.hpp
==============================================================================
--- trunk/boost/random/lognormal_distribution.hpp	(original)
+++ trunk/boost/random/lognormal_distribution.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -188,12 +188,14 @@
 
 } // namespace random
 
+/// \cond show_deprecated
+
 /**
  * Provided for backwards compatibility.  This class is
  * deprecated.  It provides the old behavior of lognormal_distribution with
  * \f$\displaystyle p(x) = \frac{1}{x \sigma_N \sqrt{2\pi}} e^{\frac{-\left(\log(x)-\mu_N\right)^2}{2\sigma_N^2}}\f$
  * for x > 0, where \f$\displaystyle \mu_N = \log\left(\frac{\mu^2}{\sqrt{\sigma^2 + \mu^2}}\right)\f$ and
- * \f$\displaystyle \sigma_N = \sqrt{\log\left(1 + \frac{\sigma^2}{\mu^2}\right)}.
+ * \f$\displaystyle \sigma_N = \sqrt{\log\left(1 + \frac{\sigma^2}{\mu^2}\right)}\f$.
  */
 template<class RealType = double>
 class lognormal_distribution
@@ -229,7 +231,7 @@
         return is;
     }
 private:
-    /// \cond
+    /// \cond show_private
     void init()
     {
         using std::log;
@@ -245,6 +247,8 @@
     /// \endcond
 };
 
+/// \endcond
+
 } // namespace boost
 
 #endif // BOOST_RANDOM_LOGNORMAL_DISTRIBUTION_HPP
Modified: trunk/boost/random/mersenne_twister.hpp
==============================================================================
--- trunk/boost/random/mersenne_twister.hpp	(original)
+++ trunk/boost/random/mersenne_twister.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -262,7 +262,7 @@
     { return !(x == y); }
 
 private:
-    /// \cond hide_private_members
+    /// \cond show_private
 
     void twist();
 
@@ -361,7 +361,7 @@
     std::size_t i;
 };
 
-/// \cond
+/// \cond show_private
 
 #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
 //  A definition is required even for integral static constants
@@ -498,8 +498,7 @@
     UINT64_C(6364136223846793005)> mt19937_64;
 #endif
 
-
-/// \cond
+/// \cond show_deprecated
 
 template<class UIntType,
          int w, int n, int m, int r,
Modified: trunk/boost/random/negative_binomial_distribution.hpp
==============================================================================
--- trunk/boost/random/negative_binomial_distribution.hpp	(original)
+++ trunk/boost/random/negative_binomial_distribution.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -196,7 +196,7 @@
 
 private:
 
-    /// @cond
+    /// @cond \show_private
 
     template<class CharT, class Traits>
     void read(std::basic_istream<CharT, Traits>& is) {
Modified: trunk/boost/random/normal_distribution.hpp
==============================================================================
--- trunk/boost/random/normal_distribution.hpp	(original)
+++ trunk/boost/random/normal_distribution.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -208,15 +208,10 @@
     BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(normal_distribution)
 
 private:
-
-    /// @cond
-
     RealType _mean, _sigma;
     RealType _r1, _r2, _cached_rho;
     bool _valid;
 
-    /// @endcond
-
 };
 
 } // namespace random
Modified: trunk/boost/random/piecewise_constant_distribution.hpp
==============================================================================
--- trunk/boost/random/piecewise_constant_distribution.hpp	(original)
+++ trunk/boost/random/piecewise_constant_distribution.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -211,19 +211,15 @@
 
     private:
 
-        /// @cond
-
         friend class piecewise_constant_distribution;
 
         std::vector<RealType> _intervals;
         std::vector<WeightType> _weights;
-
-        /// @endcond
     };
 
     /**
      * Creates a new @c piecewise_constant_distribution with
-     * a single interval, [0, 1)$.
+     * a single interval, [0, 1).
      */
     piecewise_constant_distribution()
     {
@@ -460,13 +456,8 @@
     BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(piecewise_constant_distribution)
 
 private:
-
-    /// @cond
-
     discrete_distribution<std::size_t, WeightType> _bins;
     std::vector<RealType> _intervals;
-
-    /// @endcond
 };
 
 }
Modified: trunk/boost/random/piecewise_linear_distribution.hpp
==============================================================================
--- trunk/boost/random/piecewise_linear_distribution.hpp	(original)
+++ trunk/boost/random/piecewise_linear_distribution.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -225,15 +225,10 @@
         BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
 
     private:
-
-        /// @cond
-
         friend class piecewise_linear_distribution;
 
         std::vector<RealType> _intervals;
         std::vector<WeightType> _weights;
-
-        /// @endcond
     };
 
     /**
@@ -487,7 +482,7 @@
 
 private:
 
-    /// @cond
+    /// @cond \show_private
 
     void init(const std::vector<RealType>& intervals_arg,
               const std::vector<WeightType>& weights_arg)
Modified: trunk/boost/random/poisson_distribution.hpp
==============================================================================
--- trunk/boost/random/poisson_distribution.hpp	(original)
+++ trunk/boost/random/poisson_distribution.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -225,7 +225,7 @@
 
 private:
 
-    /// @cond
+    /// @cond show_private
 
     template<class CharT, class Traits>
     void read(std::basic_istream<CharT, Traits>& is) {
Modified: trunk/boost/random/random_device.hpp
==============================================================================
--- trunk/boost/random/random_device.hpp	(original)
+++ trunk/boost/random/random_device.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -77,7 +77,7 @@
  *
  * <table cols="2">
  *   <tr><th>class</th><th>time per invocation [usec]</th></tr>
- *   <tr><td> @xmlonly <classname alt="boost::random_device">random_device</classname> @endxmlonly </td><td>92.0</td></tr>
+ *   <tr><td> \random_device </td><td>92.0</td></tr>
  * </table>
  *
  * The measurement error is estimated at +/- 1 usec.
Modified: trunk/boost/random/seed_seq.hpp
==============================================================================
--- trunk/boost/random/seed_seq.hpp	(original)
+++ trunk/boost/random/seed_seq.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -30,21 +30,37 @@
 namespace boost {
 namespace random {
 
+/**
+ * The class @c seed_seq stores a sequence of 32-bit words
+ * for seeding a \pseudo_random_number_generator.  These
+ * words will be combined to fill the entire state of the
+ * generator.
+ */
 class seed_seq {
 public:
     typedef boost::uint_least32_t result_type;
 
+    /** Initializes a seed_seq to hold an empty sequence. */
     seed_seq() {}
 #ifndef BOOST_NO_INITIALIZER_LISTS
+    /** Initializes the sequence from an initializer_list. */
     template<class T>
     seed_seq(const std::initializer_list<T>& il) : v(il.begin(), il.end()) {}
 #endif
+    /** Initializes the sequence from an iterator range. */
     template<class Iter>
     seed_seq(Iter first, Iter last) : v(first, last) {}
+    /** Initializes the sequence from Boost.Range range. */
     template<class Range>
     explicit seed_seq(const Range& range)
       : v(boost::begin(range), boost::end(range)) {}
 
+    /**
+     * Fills a range with 32-bit values based on the stored sequence.
+     *
+     * Requires: Iter must be a Random Access Iterator whose value type
+     * is an unsigned integral type at least 32 bits wide.
+     */
     template<class Iter>
     void generate(Iter first, Iter last) const
     {
@@ -87,7 +103,9 @@
             *(first + k%n) = r4;
         }
     }
+    /** Returns the size of the sequence. */
     std::size_t size() const { return v.size(); }
+    /** Writes the stored sequence to iter. */
     template<class Iter>
     void param(Iter out) { std::copy(v.begin(), v.end(), out); }
 private:
Modified: trunk/boost/random/shuffle_order.hpp
==============================================================================
--- trunk/boost/random/shuffle_order.hpp	(original)
+++ trunk/boost/random/shuffle_order.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -233,7 +233,7 @@
 
 private:
 
-    /// \cond
+    /// \cond show_private
 
     void init()
     {
@@ -260,7 +260,6 @@
 const std::size_t shuffle_order_engine<URNG, k>::buffer_size;
 #endif
 
-// validation by experiment from Harry Erwin's generator.h (private e-mail)
 /**
  * According to Harry Erwin (private e-mail), the specialization
  * @c kreutzer1986 was suggested in:
@@ -274,6 +273,15 @@
     linear_congruential_engine<uint32_t, 1366, 150889, 714025>,
     97> kreutzer1986;
 
+/**
+ * The specialization @c knuth_b is specified by the C++ standard.
+ * It is described in
+ *
+ * @blockquote
+ * "The Art of Computer Programming, Second Edition, Volume 2,
+ * Seminumerical Algorithms", Donald Knuth, Addison-Wesley, 1981.
+ * @endblockquote
+ */
 typedef shuffle_order_engine<minstd_rand0, 256> knuth_b;
 
 } // namespace random
Modified: trunk/boost/random/student_t_distribution.hpp
==============================================================================
--- trunk/boost/random/student_t_distribution.hpp	(original)
+++ trunk/boost/random/student_t_distribution.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -31,7 +31,7 @@
  * It has \f$\displaystyle p(x) =
  *   \frac{1}{\sqrt{n\pi}}
  *   \frac{\Gamma((n+1)/2)}{\Gamma(n/2)}
- *   \left(1}\frac{x^2}{n}\right)^{-(n+1)/2}
+ *   \left(1+\frac{x^2}{n}\right)^{-(n+1)/2}
  * \f$.
  */
 template<class RealType = double>
Modified: trunk/boost/random/subtract_with_carry.hpp
==============================================================================
--- trunk/boost/random/subtract_with_carry.hpp	(original)
+++ trunk/boost/random/subtract_with_carry.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -225,7 +225,7 @@
     BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(subtract_with_carry_engine)
 
 private:
-    /// \cond
+    /// \cond show_private
     // returns x(i-r+index), where index is in 0..r-1
     IntType compute(unsigned int index) const
     {
@@ -270,7 +270,17 @@
 
 
 // use a floating-point representation to produce values in [0..1)
-/** @copydoc boost::random::subtract_with_carry_engine */
+/**
+ * Instantiations of \subtract_with_carry_01_engine model a
+ * \pseudo_random_number_generator.  The algorithm is
+ * described in
+ *
+ *  @blockquote
+ *  "A New Class of Random Number Generators", George
+ *  Marsaglia and Arif Zaman, Annals of Applied Probability,
+ *  Volume 1, Number 3 (1991), 462-480.
+ *  @endblockquote
+ */
 template<class RealType, std::size_t w, std::size_t s, std::size_t r>
 class subtract_with_carry_01_engine
 {
@@ -284,21 +294,21 @@
 
     BOOST_STATIC_ASSERT(!std::numeric_limits<result_type>::is_integer);
 
-    /** Creates a new subtract_with_carry_01_engine using the default seed. */
+    /** Creates a new \subtract_with_carry_01_engine using the default seed. */
     subtract_with_carry_01_engine() { init_modulus(); seed(); }
     /** Creates a new subtract_with_carry_01_engine and seeds it with value. */
     BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(subtract_with_carry_01_engine,
                                                uint32_t, value)
     { init_modulus(); seed(value); }
     /**
-     * Creates a new subtract_with_carry_01_engine and seeds with with values
+     * Creates a new \subtract_with_carry_01_engine and seeds with with values
      * produced by seq.generate().
      */
     BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(subtract_with_carry_01_engine,
                                              SeedSeq, seq)
     { init_modulus(); seed(seq); }
     /**
-     * Creates a new subtract_with_carry_01_engine and seeds it with values
+     * Creates a new \subtract_with_carry_01_engine and seeds it with values
      * from a range.  Advances first to point one past the last consumed
      * value.  If the range does not contain enough elements to fill the
      * entire state, throws @c std::invalid_argument.
@@ -307,7 +317,7 @@
     { init_modulus(); seed(first,last); }
 
 private:
-    /// \cond
+    /// \cond show_private
     void init_modulus()
     {
 #ifndef BOOST_NO_STDC_NAMESPACE
@@ -433,7 +443,7 @@
         }
     }
 
-    /** Writes a subtract_with_carry_01_engine to a @c std::ostream. */
+    /** Writes a \subtract_with_carry_01_engine to a @c std::ostream. */
     BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, subtract_with_carry_01_engine, f)
     {
         std::ios_base::fmtflags oldflags =
@@ -445,7 +455,7 @@
         return os;
     }
     
-    /** Reads a subtract_with_carry_01_engine from a @c std::istream. */
+    /** Reads a \subtract_with_carry_01_engine from a @c std::istream. */
     BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, subtract_with_carry_01_engine, f)
     {
         RealType value;
@@ -472,7 +482,7 @@
     BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(subtract_with_carry_01_engine)
 
 private:
-    /// \cond
+    /// \cond show_private
     RealType compute(unsigned int index) const
     {
         return x[(k+index) % long_lag];
@@ -499,7 +509,7 @@
 #endif
 
 
-/// \cond
+/// \cond show_deprecated
 
 template<class IntType, IntType m, unsigned s, unsigned r, IntType v>
 class subtract_with_carry :
Modified: trunk/boost/random/triangle_distribution.hpp
==============================================================================
--- trunk/boost/random/triangle_distribution.hpp	(original)
+++ trunk/boost/random/triangle_distribution.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -207,7 +207,7 @@
     BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(triangle_distribution)
 
 private:
-    /// \cond
+    /// \cond show_private
     void init()
     {
         using std::sqrt;
Modified: trunk/boost/random/uniform_01.hpp
==============================================================================
--- trunk/boost/random/uniform_01.hpp	(original)
+++ trunk/boost/random/uniform_01.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -26,6 +26,7 @@
 #include <boost/random/detail/disable_warnings.hpp>
 
 namespace boost {
+namespace random {
 
 #ifdef BOOST_RANDOM_DOXYGEN
 
@@ -266,6 +267,10 @@
 
 #endif
 
+} // namespace random
+
+using random::uniform_01;
+
 } // namespace boost
 
 #include <boost/random/detail/enable_warnings.hpp>
Modified: trunk/boost/random/uniform_smallint.hpp
==============================================================================
--- trunk/boost/random/uniform_smallint.hpp	(original)
+++ trunk/boost/random/uniform_smallint.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -63,7 +63,8 @@
  *
  * The template parameter IntType shall denote an integer-like value type.
  *
- * Note: The property above is the square sum of the relative differences
+ * @xmlnote
+ * The property above is the square sum of the relative differences
  * in probabilities between the desired uniform distribution
  * \f$p_{\mathtt{out}}(i)\f$ and the generated distribution
  * \f$p_{\mathtt{out\_s}}(i)\f$.
@@ -85,6 +86,7 @@
  * {r_{\mathtt{out}}}\right\rfloor/r_{\mathtt{base}}\f$ otherwise.
  * Substituting this in the
  * above sum formula leads to the desired result.
+ * @endxmlnote
  *
  * Note: The upper bound for
  * \f$(r_{\mathtt{base}} \mbox{ mod } r_{\mathtt{out}})
@@ -228,7 +230,7 @@
 
 private:
     
-    // \cond
+    // \cond show_private
     template<class Engine>
     result_type generate(Engine& eng, boost::mpl::true_) const
     {
Modified: trunk/boost/random/variate_generator.hpp
==============================================================================
--- trunk/boost/random/variate_generator.hpp	(original)
+++ trunk/boost/random/variate_generator.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -33,9 +33,6 @@
  * Boost.Random provides a vast choice of \generators as well
  * as \distributions.
  *
- * Instantations of class template @c variate_generator model
- * a \number_generator.
- *
  * The argument for the template parameter Engine shall be of
  * the form U, U&, or U*, where U models a
  * \uniform_random_number_generator.  Then, the member
Modified: trunk/boost/random/xor_combine.hpp
==============================================================================
--- trunk/boost/random/xor_combine.hpp	(original)
+++ trunk/boost/random/xor_combine.hpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -176,7 +176,7 @@
 const int xor_combine_engine<URNG1, s1, URNG2, s2>::shift2;
 #endif
 
-/// \cond
+/// \cond show_private
 
 /** Provided for backwards compatibility. */
 template<class URNG1, int s1, class URNG2, int s2,
Modified: trunk/libs/random/doc/Jamfile.v2
==============================================================================
--- trunk/libs/random/doc/Jamfile.v2	(original)
+++ trunk/libs/random/doc/Jamfile.v2	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -19,30 +19,40 @@
     bernoulli_distribution
     binomial_distribution
     cauchy_distribution
+    chi_squared_distribution
     discard_block
     discrete_distribution
     exponential_distribution
     extreme_value_distribution
+    fisher_f_distribution
     gamma_distribution
     geometric_distribution
+    independent_bits
     inversive_congruential
     lagged_fibonacci
     linear_congruential
     linear_feedback_shift
     lognormal_distribution
     mersenne_twister
+    negative_binomial_distribution
     normal_distribution
+    piecewise_constant_distribution
+    piecewise_linear_distribution
     poisson_distribution
+    random_device
     random_number_generator
     ranlux
+    seed_seq
     shuffle_order
     # shuffle_output
+    student_t_distribution
     subtract_with_carry
+    taus88
     triangle_distribution
     uniform_01
-    uniform_int
+    uniform_int_distribution
     uniform_on_sphere
-    uniform_real
+    uniform_real_distribution
     uniform_smallint
     variate_generator
     weibull_distribution
@@ -62,7 +72,6 @@
 
 doxygen reference :
     $(here)/../../../boost/random/$(doxygen_files).hpp
-    $(here)/../../../boost/nondet_random.hpp
     $(here)/../../../boost/random.hpp
   :
     <doxygen:param>EXPAND_ONLY_PREDEF=YES
@@ -78,25 +87,25 @@
         pseudo_random_number_generator=\"@xmlonly <link linkend=\\\"boost_random.reference.concepts.pseudo_random_number_generator\\\">pseudo-random number generator</link> @endxmlonly\" \\
         uniform_random_number_generator=\"@xmlonly <link linkend=\\\"boost_random.reference.concepts.uniform_random_number_generator\\\">uniform random number generator</link> @endxmlonly\" \\
         nondeterministic_random_number_generator=\"@xmlonly <link linkend=\\\"boost_random.reference.concepts.non_deterministic_uniform_random_number_generator\\\">non-deterministic random number generator</link> @endxmlonly\" \\
-        number_generator=\"@xmlonly <link linkend=\\\"boost_random.reference.concepts.number_generator\\\">number generator</link> @endxmlonly\" \\
         generators=\"@xmlonly <link linkend=\\\"boost_random.reference.generators\\\">generators</link> @endxmlonly\" \\
         distributions=\"@xmlonly <link linkend=\\\"boost_random.reference.distributions\\\">distributions</link> @endxmlonly\" \\
-        additive_combine=\"@xmlonly <classname alt=\\\"boost::random::additive_combine\\\">additive_combine</classname> @endxmlonly\" \\
+        additive_combine_engine=\"@xmlonly <classname alt=\\\"boost::random::additive_combine_engine\\\">additive_combine_engine</classname> @endxmlonly\" \\
         discard_block_engine=\"@xmlonly <classname alt=\\\"boost::random::discard_block_engine\\\">discard_block_engine</classname> @endxmlonly\" \\
-        lagged_fibonacci=\"@xmlonly<classname alt=\\\"boost::random::lagged_fibonacci\\\">lagged_fibonacci</classname>@endxmlonly\" \\
+        lagged_fibonacci_engine=\"@xmlonly<classname alt=\\\"boost::random::lagged_fibonacci_engine\\\">lagged_fibonacci_engine</classname>@endxmlonly\" \\
+        subtract_with_carry_01_engine=\"@xmlonly<classname alt=\\\"boost::random::subtract_with_carry_01_engine\\\">subtract_with_carry_01_engine</classname>@endxmlonly\" \\
         linear_congruential_engine=\"@xmlonly<classname alt=\\\"boost::random::linear_congruential_engine\\\">linear_congruential_engine</classname>@endxmlonly\" \\
         minstd_rand=\"@xmlonly <classname alt=\\\"boost::random::minstd_rand\\\">minstd_rand</classname> @endxmlonly\" \\
         minstd_rand0=\"@xmlonly <classname alt=\\\"boost::random::minstd_rand0\\\">minstd_rand0</classname> @endxmlonly\" \\
         rand48=\"@xmlonly <classname alt=\\\"boost::random::rand48\\\">rand48</classname> @endxmlonly\" \\
         mt11213b=\"@xmlonly <classname alt=\\\"boost::random::mt11213b\\\">mt11213b</classname> @endxmlonly\" \\
         mt19937=\"@xmlonly <classname alt=\\\"boost::random::mt19937\\\">mt19937</classname> @endxmlonly\" \\
-        ecuyer1988=\"@xmlonly <classname alt=\\\"boost::ecuyer1988\\\">ecuyer1988</classname> @endxmlonly\" \\
-        lagged_fibonacci607=\"@xmlonly <classname alt=\\\"boost::lagged_fibonacci607\\\">lagged_fibonacci607</classname> @endxmlonly\" \\
-        lagged_fibonacci44497=\"@xmlonly <classname alt=\\\"boost::lagged_fibonacci44497\\\">lagged_fibonacci44497</classname> @endxmlonly\" \\
-        bernoulli_distribution=\"@xmlonly <classname alt=\\\"boost::bernoulli_distribution\\\">bernoulli_distribution</classname> @endxmlonly\" \\
-        cauchy_distribution=\"@xmlonly <classname alt=\\\"boost::cauchy_distribution\\\">cauchy_distribution</classname> @endxmlonly\" \\
-        uniform_01=\"@xmlonly<classname alt=\\\"boost::uniform_01\\\">uniform_01</classname>@endxmlonly\" \\
-        random_device=\"@xmlonly<classname alt=\\\"boost::random_device\\\">random_device</classname>@endxmlonly\""
+        ecuyer1988=\"@xmlonly <classname alt=\\\"boost::random::ecuyer1988\\\">ecuyer1988</classname> @endxmlonly\" \\
+        lagged_fibonacci607=\"@xmlonly <classname alt=\\\"boost::random::lagged_fibonacci607\\\">lagged_fibonacci607</classname> @endxmlonly\" \\
+        lagged_fibonacci44497=\"@xmlonly <classname alt=\\\"boost::random::lagged_fibonacci44497\\\">lagged_fibonacci44497</classname> @endxmlonly\" \\
+        bernoulli_distribution=\"@xmlonly <classname alt=\\\"boost::random::bernoulli_distribution\\\">bernoulli_distribution</classname> @endxmlonly\" \\
+        cauchy_distribution=\"@xmlonly <classname alt=\\\"boost::random::cauchy_distribution\\\">cauchy_distribution</classname> @endxmlonly\" \\
+        uniform_01=\"@xmlonly<classname alt=\\\"boost::random::uniform_01\\\">uniform_01</classname>@endxmlonly\" \\
+        random_device=\"@xmlonly<classname alt=\\\"boost::random::random_device\\\">random_device</classname>@endxmlonly\""
     <doxygen:param>HIDE_UNDOC_MEMBERS=NO
     <doxygen:param>QUIET=YES
     <doxygen:param>WARN_IF_UNDOCUMENTED=NO
@@ -125,10 +134,16 @@
         \"b_arg=b\" \\
         \"c_arg=c\" \\
         \"t_arg=t\" \\
+        \"m_arg=m\" \\
+        \"n_arg=n\" \\
+        \"s_arg=s\" \\
+        \"k_arg=k\" \\
         \"min_arg=min\" \\
         \"max_arg=max\" \\
+        \"dim_arg=dim\" \\
         \"parm=param\" \\
         \"aseed=seed\" \\
+        \"seed_arg=seed\" \\
         \"BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os,T,t)=template<class CharT, class Traits> friend std::basic_ostream<CharT,Traits>& operator<<(std::basic_ostream<CharT,Traits>& os, const T& t)\" \\
         \"BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is,T,t)=template<class CharT, class Traits> friend std::basic_istream<CharT,Traits>& operator>>(std::basic_istream<CharT,Traits>& is, const T& t)\" \\
         \"BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(T,lhs,rhs)=friend bool operator==(const T& lhs, const T& rhs)\" \\
Modified: trunk/libs/random/doc/concepts.qbk
==============================================================================
--- trunk/libs/random/doc/concepts.qbk	(original)
+++ trunk/libs/random/doc/concepts.qbk	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -31,42 +31,21 @@
 * pseudo-random number generator 
 * quasi-random number generator 
 
-All variations have some properties in common, these concepts (in the STL
-sense) are called __NumberGenerator and __UniformRandomNumberGenerator. Each
-concept will be defined in a subsequent section. 
+All variations have some properties in common, the concepts (in the STL
+sense) is called __UniformRandomNumberGenerator. This
+concept will be defined in a subsequent section.
 
 The goals for this library are the following:
 
-* allow easy integration of third-party random-number generators 
-* define a validation interface for the generators 
+* allow easy integration of third-party random-number generators
 * provide easy-to-use front-end classes which model popular distributions 
 * provide maximum efficiency 
-* allow control on quantization effects in front-end processing (not yet done) 
-
-[endsect]
-
-[section Number Generator]
-
-A number generator is a /function object/ (std:20.3 [lib.function.objects]) that
-takes zero arguments. Each call to `operator()` returns a number. In the
-following table, X denotes a number generator class returning objects of type
-T, and u is a value of X.
-
-[table NumberGenerator requirements
-  [[expression] [return type] [pre/post-condition]]
-  [[`X::result_type`] [`T`] [`std::numeric_limits<T>::is_specialized` is
-                             `true`, `T` is __LessThanComparable]]
-  [[`u.operator()()`] [`T`] [-]]
-] 
-
-[note The NumberGenerator requirements do not impose any restrictions on the
-characteristics of the returned numbers.]
 
 [endsect]
 
 [section Uniform Random Number Generator]
 
-A uniform random number generator is a __NumberGenerator that provides a
+A uniform random number generator provides a
 sequence of random numbers uniformly distributed on a given range. The
 range can be compile-time fixed or available (only) after run-time construction
 of the object.
@@ -81,18 +60,9 @@
 
 [table UniformRandomNumberGenerator requirements
   [[expression] [return type] [pre/post-condition]]
-  [[`X::has_fixed_range`] [`bool`] [compile-time constant; if `true`, the range
-                                    on which the random numbers are uniformly
-                                    distributed is known at compile-time and
-                                    members `min_value` and `max_value` exist.
-                                    Note: This flag may also be `false` due to
-                                    compiler limitations]]
-  [[`X::min_value`] [`T`] [compile-time constant; `min_value` is only defined if
-                           `has_fixed_range` is `true`.  If it exists, it is
-                           equal to `v.min()`.]]
-  [[`X::max_value`] [`T`] [compile-time constant; `max_value` is only defined if
-                           `has_fixed_range` is `true`.  If it exists, it is
-                           equal to `v.max()`]] 
+  [[`X::result_type`] [`T`] [`std::numeric_limits<T>::is_specialized` is
+                             `true`, `T` is __LessThanComparable]]
+  [[`u.operator()()`] [`T`] [-]]
   [[`v.min()`] [`T`] [tight lower bound on the set of all values returned by
                       `operator()`. The return value of this function shall not
                       change during the lifetime of the object.]]
@@ -160,7 +130,7 @@
 provides a deterministic sequence of pseudo-random numbers, based on some
 algorithm and internal state.
 [classref boost::random::linear_congruential_engine
-Linear congruential] and [classref boost::random::inversive_congruential
+Linear congruential] and [classref boost::random::inversive_congruential_engine
 inversive congruential] generators are examples of such [prng pseudo-random
 number generators]. Often, these generators are very sensitive to their
 parameters. In order to prevent wrong implementations from being used, an
@@ -187,20 +157,13 @@
   [[`X()`] [-] [creates a generator in some implementation-defined state.
                 Note: Several generators thusly created may possibly produce
                 dependent or identical sequences of random numbers.]]
-  [[`explicit X(...)`] [-] [creates a generator with user-provided state; the
+  [[`X(...)`] [-] [creates a generator with user-provided state; the
                             implementation shall specify the constructor
                             argument(s)]]
   [[`u.seed(...)`] [`void`] [sets the current state according to the
                              argument(s); at least functions with the same
                              signature as the non-default constructor(s)
                              shall be provided.]]
-  [[`X::validation(x)`] [`bool`] [compares the pre-computed and hardcoded
-                                  10001th element in the generator's random
-                                  number sequence with x. The generator must
-                                  have been constructed by its default
-                                  constructor and seed must not have been
-                                  called for the validation to be
-                                  meaningful.]]
 ]
 
 [note The seed member function is similar to the assign member function in
@@ -220,7 +183,7 @@
 pseudo-random number generator with the restored state and the original at
 the just-written state shall be equivalent.
 
-Classes which model a pseudo-random number generator may also model the
+Classes which model a pseudo-random number generator should also model the
 __CopyConstructible and __Assignable concepts. However, note that the
 sequences of the original and the copy are strongly correlated (in fact,
 they are identical), which may make them unsuitable for some problem domains.
@@ -248,16 +211,16 @@
 `e` is an lvalue of an arbitrary type that meets the requirements of a
 __UniformRandomNumberGenerator, returning values of type `U`.
 
-[table Random distribution requirements (in addition to NumberGenerator, CopyConstructible, and Assignable)
+[table Random distribution requirements (in addition to CopyConstructible, and Assignable)
   [[expression] [return type] [pre/post-condition] [complexity]]
-  [[`X::input_type`] [`U`] [-] [compile-time]]
+  [[`X::result_type`] [`T`] [-] [compile-time]]
   [[`u.reset()`] [`void`] [subsequent uses of `u` do not depend on values
-                           produced by `e` prior to invoking `reset`.]
+                           produced by any engine prior to invoking `reset`.]
                          [constant]]
   [[`u(e)`] [`T`] [the sequence of numbers returned by successive invocations
                    with the same object `e` is randomly distributed with some
                    probability density function `p(x)`]
-                  [amortized constant  number of invocations of `e`]]
+                  [amortized constant number of invocations of `e`]]
   [[`os << x`] [`std::ostream&`] [writes a textual representation for the
                                   parameters and additional internal data of
                                   the distribution `x` to `os`.
Modified: trunk/libs/random/doc/distributions.qbk
==============================================================================
--- trunk/libs/random/doc/distributions.qbk	(original)
+++ trunk/libs/random/doc/distributions.qbk	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -18,24 +18,28 @@
 values of the specified distribution or otherwise do not converge
 statistically to it are not acceptable.
 
-[table distributions
+[table Uniform 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
+  [[__uniform_int_distribution] [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
+  [[__uniform_real_distribution] [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)]]
+]
+
+[table Bernoulli Distributions
+  [[distribution] [explanation] [example]]
   [[__bernoulli_distribution] [Bernoulli experiment: discrete boolean valued
                                distribution with configurable probability]
                               [tossing a coin (p=0.5)]]
@@ -43,21 +47,33 @@
                               experiments]
                              [tossing a coin 20 times and counting how many
                                 front sides are shown]]
-  [[__cauchy_distribution][cauchy distribution][-]]
-  [[__discrete_distribution][discrete distribution with specific probabilities][rolling an unfair die]]
-  [[__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] [-]]
+  [[__negative_binomial_distribution] [Counts the number of failures of repeated
+                             Bernoulli experiments required to get some constant
+                             number of successes.]
+                            [flipping a coin and counting the number of
+                             heads that show up before we get 3 tails]]
+]
+
+[table Poisson Distributions
+  [[distribution] [explanation] [example]]
+  [[__poisson_distribution][poisson distribution]
+                           [counting the number of alpha particles emitted
+                            by radioactive matter in a fixed period of time]]
   [[__exponential_distribution] [exponential distribution]
                                 [measuring the inter-arrival time of alpha
                                  particles emitted by radioactive matter]]
+  [[__gamma_distribution][gamma distribution][-]]
+  [[__weibull_distribution] [weibull distribution] [-]]
+  [[__extreme_value_distribution] [extreme value distribution] [-]]
+]
+
+[table Normal Distributions
+  [[distribution] [explanation] [example]]
   [[__normal_distribution] [counts outcomes of (infinitely) repeated Bernoulli
                             experiments]
                            [tossing a coin 10000 times and counting how many
@@ -66,8 +82,23 @@
                                simulations)]
                               [measuring the job completion time of an assembly
                                line worker]]
-  [[__weibull_distribution] [weibull distribution] [-]]
-  [[__extreme_value_distribution] [extreme value distribution] [-]]
+  [[__chi_squared_distribution][chi-squared distribution][-]]
+  [[__cauchy_distribution][Cauchy distribution][-]]
+  [[__fisher_f_distribution][Fisher F distribution][-]]
+  [[__student_t_distribution][Student t distribution][-]]
+]
+
+[table Sampling Distributions
+  [[distribution] [explanation] [example]]
+  [[__discrete_distribution][discrete distribution with specific probabilities][rolling an unfair die]]
+  [[__piecewise_constant_distribution][-][-]]
+  [[__piecewise_linear_distribution][-][-]]
+]
+
+
+[table Miscellaneous Distributions
+  [[distribution] [explanation] [example]]
+  [[__triangle_distribution] [triangle distribution] [-]]
   [[__uniform_on_sphere] [uniform distribution on a unit sphere of arbitrary
                           dimension]
                          [choosing a random point on Earth (assumed to be a
Modified: trunk/libs/random/doc/random.qbk
==============================================================================
--- trunk/libs/random/doc/random.qbk	(original)
+++ trunk/libs/random/doc/random.qbk	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -26,30 +26,30 @@
 [def __EqualityComparable [@boost:/doc/html/EqualityComparable.html EqualityComparable]]
 [def __Streamable Streamable]
 
-[def __random_device [classref boost::random_device random_device]]
+[def __random_device [classref boost::random::random_device random_device]]
 [def __random_number_generator [classref boost::random_number_generator random_number_generator]]
 [def __variate_generator [classref boost::variate_generator variate_generator]]
 
 [def __minstd_rand0 [classref boost::random::minstd_rand0 minstd_rand0]]
 [def __minstd_rand [classref boost::random::minstd_rand minstd_rand]]
 [def __rand48 [classref boost::random::rand48 rand48]]
-[def __ecuyer1988 [classref boost::ecuyer1988 ecuyer1988]]
+[def __ecuyer1988 [classref boost::random::ecuyer1988 ecuyer1988]]
 [def __kreutzer1986 [classref boost::random::kreutzer1986 kreutzer1986]]
 [def __knuth_b [classref boost::random::knuth_b knuth_b]]
-[def __taus88 [classref boost::taus88 taus88]]
-[def __hellekalek1995 [classref boost::hellekalek1995 hellekalek1995]]
+[def __taus88 [classref boost::random::taus88 taus88]]
+[def __hellekalek1995 [classref boost::random::hellekalek1995 hellekalek1995]]
 [def __mt11213b [classref boost::random::mt11213b mt11213b]]
 [def __mt19937 [classref boost::random::mt19937 mt19937]]
 [def __mt19937_64 [classref boost::random::mt19937_64 mt19937_64]]
-[def __lagged_fibonacci607 [classref boost::lagged_fibonacci607 lagged_fibonacci607]]
-[def __lagged_fibonacci1279 [classref boost::lagged_fibonacci1279 lagged_fibonacci1279]]
-[def __lagged_fibonacci2281 [classref boost::lagged_fibonacci2281 lagged_fibonacci2281]]
-[def __lagged_fibonacci3217 [classref boost::lagged_fibonacci3217 lagged_fibonacci3217]]
-[def __lagged_fibonacci4423 [classref boost::lagged_fibonacci4423 lagged_fibonacci4423]]
-[def __lagged_fibonacci9689 [classref boost::lagged_fibonacci9689 lagged_fibonacci9689]]
-[def __lagged_fibonacci19937 [classref boost::lagged_fibonacci19937 lagged_fibonacci19937]]
-[def __lagged_fibonacci23209 [classref boost::lagged_fibonacci23209 lagged_fibonacci23209]]
-[def __lagged_fibonacci44497 [classref boost::lagged_fibonacci44497 lagged_fibonacci44497]]
+[def __lagged_fibonacci607 [classref boost::random::lagged_fibonacci607 lagged_fibonacci607]]
+[def __lagged_fibonacci1279 [classref boost::random::lagged_fibonacci1279 lagged_fibonacci1279]]
+[def __lagged_fibonacci2281 [classref boost::random::lagged_fibonacci2281 lagged_fibonacci2281]]
+[def __lagged_fibonacci3217 [classref boost::random::lagged_fibonacci3217 lagged_fibonacci3217]]
+[def __lagged_fibonacci4423 [classref boost::random::lagged_fibonacci4423 lagged_fibonacci4423]]
+[def __lagged_fibonacci9689 [classref boost::random::lagged_fibonacci9689 lagged_fibonacci9689]]
+[def __lagged_fibonacci19937 [classref boost::random::lagged_fibonacci19937 lagged_fibonacci19937]]
+[def __lagged_fibonacci23209 [classref boost::random::lagged_fibonacci23209 lagged_fibonacci23209]]
+[def __lagged_fibonacci44497 [classref boost::random::lagged_fibonacci44497 lagged_fibonacci44497]]
 [def __ranlux3 [classref boost::random::ranlux3 ranlux3]]
 [def __ranlux4 [classref boost::random::ranlux4 ranlux4]]
 [def __ranlux64_3 [classref boost::random::ranlux64_3 ranlux64_3]]
@@ -61,24 +61,30 @@
 [def __ranlux24 [classref boost::random::ranlux24 ranlux24]]
 [def __ranlux48 [classref boost::random::ranlux48 ranlux48]]
 
-[def __uniform_smallint [classref boost::uniform_smallint uniform_smallint]]
-[def __uniform_int [classref boost::uniform_int uniform_int]]
-[def __uniform_01 [classref boost::uniform_01 uniform_01]]
-[def __uniform_real [classref boost::uniform_real uniform_real]]
-[def __bernoulli_distribution [classref boost::bernoulli_distribution bernoulli_distribution]]
+[def __uniform_smallint [classref boost::random::uniform_smallint uniform_smallint]]
+[def __uniform_int_distribution [classref boost::random::uniform_int_distribution uniform_int_distribution]]
+[def __uniform_01 [classref boost::random::uniform_01 uniform_01]]
+[def __uniform_real_distribution [classref boost::random::uniform_real_distribution uniform_real_distribution]]
+[def __bernoulli_distribution [classref boost::random::bernoulli_distribution bernoulli_distribution]]
 [def __binomial_distribution [classref boost::random::binomial_distribution binomial_distribution]]
-[def __cauchy_distribution [classref boost::cauchy_distribution cauchy_distribution]]
+[def __cauchy_distribution [classref boost::random::cauchy_distribution cauchy_distribution]]
 [def __discrete_distribution [classref boost::random::discrete_distribution discrete_distribution]]
 [def __gamma_distribution [classref boost::random::gamma_distribution gamma_distribution]]
 [def __poisson_distribution [classref boost::random::poisson_distribution poisson_distribution]]
-[def __geometric_distribution [classref boost::geometric_distribution geometric_distribution]]
-[def __triangle_distribution [classref boost::triangle_distribution triangle_distribution]]
-[def __exponential_distribution [classref boost::exponential_distribution exponential_distribution]]
-[def __normal_distribution [classref boost::normal_distribution normal_distribution]]
-[def __lognormal_distribution [classref boost::lognormal_distribution lognormal_distribution]]
-[def __uniform_on_sphere [classref boost::uniform_on_sphere uniform_on_sphere]]
+[def __geometric_distribution [classref boost::random::geometric_distribution geometric_distribution]]
+[def __triangle_distribution [classref boost::random::triangle_distribution triangle_distribution]]
+[def __exponential_distribution [classref boost::random::exponential_distribution exponential_distribution]]
+[def __normal_distribution [classref boost::random::normal_distribution normal_distribution]]
+[def __lognormal_distribution [classref boost::random::lognormal_distribution lognormal_distribution]]
+[def __uniform_on_sphere [classref boost::random::uniform_on_sphere uniform_on_sphere]]
 [def __weibull_distribution [classref boost::random::weibull_distribution weibull_distribution]]
 [def __extreme_value_distribution [classref boost::random::extreme_value_distribution extreme_value_distribution]]
+[def __negative_binomial_distribution [classref boost::random::negative_binomial_distribution negative_binomial_distribution]]
+[def __student_t_distribution [classref boost::random::student_t_distribution student_t_distribution]]
+[def __fisher_f_distribution [classref boost::random::fisher_f_distribution fisher_f_distribution]]
+[def __chi_squared_distribution [classref boost::random::chi_squared_distribution chi_squared_distribution]]
+[def __piecewise_constant_distribution [classref boost::random::piecewise_constant_distribution piecewise_constant_distribution]]
+[def __piecewise_linear_distribution [classref boost::random::piecewise_linear_distribution piecewise_linear_distribution]]
 
 [include performance_data.qbk]
 
@@ -97,11 +103,10 @@
 
   ``[classref boost::random::mt19937]`` rng;         // produces randomness out of thin air
                                       // see pseudo-random number generators
-  ``[classref boost::uniform_int]<>`` six(1,6);      // distribution that maps to 1..6
+  ``[classref boost::random::uniform_int_distribution]<>`` six(1,6);
+                                      // distribution that maps to 1..6
                                       // see random number distributions
-  ``[classref boost::variate_generator]``<``[classref boost::random::mt19937]``&, ``[classref boost::uniform_int]``<> >
-           die(rng, six);             // glues randomness with mapping
-  int x = die();                      // simulate rolling a die
+  int x = six(rng);                   // simulate rolling a die
 
 [endsect]
 
@@ -131,17 +136,6 @@
 [include performance.qbk]
 [endsect]
 
-[section Rationale]
-
-The methods for generating and evaluating deterministic and non-deterministic
-random numbers differ radically. Furthermore, due to the inherent
-deterministic design of present-day computers, it is often difficult to
-implement non-deterministic random number generation facilities. Thus, the
-random number library is split into separate header files, mirroring the two
-different application domains.
-
-[endsect]
-
 [section History and Acknowledgements]
 
 In November 1999, Jeet Sukumaran proposed a framework based on virtual
Modified: trunk/libs/random/example/die.cpp
==============================================================================
--- trunk/libs/random/example/die.cpp	(original)
+++ trunk/libs/random/example/die.cpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -12,11 +12,10 @@
     For the source of this example see
     [@boost://libs/random/example/die.cpp die.cpp].
     First we include the headers we need for __mt19937
-    and __uniform_int.
+    and __uniform_int_distribution.
 */
 #include <boost/random/mersenne_twister.hpp>
-#include <boost/random/uniform_int.hpp>
-#include <boost/random/variate_generator.hpp>
+#include <boost/random/uniform_int_distribution.hpp>
 
 /*`
   We use __mt19937 with the default seed as a source of
@@ -38,24 +37,17 @@
 int roll_die() {
     /*<< __mt19937 produces integers in the range [0, 2[sup 32]-1].
         However, we want numbers in the range [1, 6].  The distribution
-        __uniform_int performs this transformation.
-        [warning Contrary to common C++ usage __uniform_int
+        __uniform_int_distribution performs this transformation.
+        [warning Contrary to common C++ usage __uniform_int_distribution
         does not take a /half-open range/.  Instead it takes a /closed range/.
-        Given the parameters 1 and 6, __uniform_int can
+        Given the parameters 1 and 6, __uniform_int_distribution can
         can produce any of the values 1, 2, 3, 4, 5, or 6.]
     >>*/
-    boost::uniform_int<> dist(1, 6);
-    /*<< __variate_generator combines a generator with a distribution.
-        [important We pass [classref boost::random::mt19937 boost::mt19937&] to
-        __variate_generator instead of just [classref boost::random::mt19937]
-        (note the reference).  Without the reference, __variate_generator
-        would make a copy of the generator and would leave the global
-        `gen` unchanged.  Consequently, `roll_die` would produce *the same value*
-        every time it was called.]
+    boost::random::uniform_int_distribution<> dist(1, 6);
+    /*<< A distribution is a function object.  We generate a random
+        number by calling `dist` with the generator.
     >>*/
-    boost::variate_generator<boost::random::mt19937&, boost::uniform_int<> > die(gen, dist);
-    /*<< A __variate_generator is a function object. >>*/
-    return die();
+    return dist(gen);
 }
 //]
 
Modified: trunk/libs/random/example/password.cpp
==============================================================================
--- trunk/libs/random/example/password.cpp	(original)
+++ trunk/libs/random/example/password.cpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -17,9 +17,8 @@
  */
 
 
-#include <boost/nondet_random.hpp>
-#include <boost/random/variate_generator.hpp>
-#include <boost/random/uniform_int.hpp>
+#include <boost/random/random_device.hpp>
+#include <boost/random/uniform_int_distribution.hpp>
 
 int main() {
     /*<< We first define the characters that we're going
@@ -35,14 +34,13 @@
     /*<< We use __random_device as a source of entropy, since we want
          passwords that are not predictable.
     >>*/
-    boost::random_device rng;
+    boost::random::random_device rng;
     /*<< Finally we select 8 random characters from the
          string and print them to cout.
     >>*/
-    boost::variate_generator<boost::random_device&, boost::uniform_int<> >
-        gen(rng, boost::uniform_int<>(0, chars.size()));
+    boost::random::uniform_int_distribution<> index_dist(0, chars.size() - 1);
     for(int i = 0; i < 8; ++i) {
-        std::cout << chars[gen()];
+        std::cout << chars[index_dist(rng)];
     }
     std::cout << std::endl;
 }
Modified: trunk/libs/random/example/weighted_die.cpp
==============================================================================
--- trunk/libs/random/example/weighted_die.cpp	(original)
+++ trunk/libs/random/example/weighted_die.cpp	2011-02-12 22:28:59 EST (Sat, 12 Feb 2011)
@@ -13,12 +13,7 @@
     [@boost://libs/random/example/weighted_die.cpp weighted_die.cpp].
 */
 #include <boost/random/mersenne_twister.hpp>
-#include <boost/random/uniform_real.hpp>
-#include <boost/random/variate_generator.hpp>
-#include <vector>
-#include <algorithm>
-#include <numeric>
-#include <iterator>
+#include <boost/random/discrete_distribution.hpp>
 
 boost::mt19937 gen;
 
@@ -26,27 +21,27 @@
    This time, instead of a fair die, the probability of
    rolling a 1 is 50% (!).  The other five faces are all
    equally likely.
+
+   __discrete_distribution works nicely here by allowing
+   us to assign weights to each of the possible outcomes.
+
+   [tip If your compiler supports `std::initializer_list`,
+   you can initialize __discrete_distribution directly with
+   the weights.]
 */
-static const double probabilities[] = {
+double probabilities[] = {
     0.5, 0.1, 0.1, 0.1, 0.1, 0.1
 };
+boost::random::discrete_distribution<> dist(probabilities);
 
 /*`
   Now define a function that simulates rolling this die.
-  Note that the C++0x library contains a `discrete_distribution`
-  class which would be a better way to do this.
 */
 int roll_weighted_die() {
-    std::vector<double> cumulative;
-    std::partial_sum(&probabilities[0], &probabilities[0] + 6,
-                     std::back_inserter(cumulative));
-    boost::uniform_real<> dist(0, cumulative.back());
-    boost::variate_generator<boost::mt19937&, boost::uniform_real<> > die(gen, dist);
-    /*<< Find the position within the sequence and add 1
-         (to make sure that the result is in the range [1,6]
-         instead of [0,5])
+    /*<< Add 1 to make sure that the result is in the range [1,6]
+         instead of [0,5].
     >>*/
-    return (std::lower_bound(cumulative.begin(), cumulative.end(), die()) - cumulative.begin()) + 1;
+    return dist(gen) + 1;
 }
 
 //]