X-Git-Url: https://git.donarmstrong.com/?p=rsem.git;a=blobdiff_plain;f=boost%2Frandom%2Frandom_number_generator.hpp;h=f8eaf01bd56ed7eed4b8dc5be5c3da5aba6a3f31;hp=55a945b9e37efc80a5a1e9df79205b52a051343c;hb=2d71eb92104693ca9baa5a2e1c23eeca776d8fd3;hpb=da57529b92adbb7ae74a89861cb39fb35ac7c62d diff --git a/boost/random/random_number_generator.hpp b/boost/random/random_number_generator.hpp index 55a945b..f8eaf01 100644 --- a/boost/random/random_number_generator.hpp +++ b/boost/random/random_number_generator.hpp @@ -7,7 +7,7 @@ * * See http://www.boost.org for most recent version including documentation. * - * $Id: random_number_generator.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $ + * $Id: random_number_generator.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $ * * Revision history * 2001-02-18 moved to individual header files @@ -16,13 +16,13 @@ #ifndef BOOST_RANDOM_RANDOM_NUMBER_GENERATOR_HPP #define BOOST_RANDOM_RANDOM_NUMBER_GENERATOR_HPP -#include -#include -#include -#include -#include +#include +#include + +#include namespace boost { +namespace random { /** * Instantiations of class template random_number_generator model a @@ -32,40 +32,42 @@ namespace boost { * * The template parameter IntType shall denote some integer-like value type. */ -template +template class random_number_generator { public: - typedef UniformRandomNumberGenerator base_type; - typedef IntType argument_type; - typedef IntType result_type; - /** - * Constructs a random_number_generator functor with the given - * \uniform_random_number_generator as the underlying source of - * random numbers. - */ - random_number_generator(base_type& rng) : _rng(rng) - { -#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS - BOOST_STATIC_ASSERT(std::numeric_limits::is_integer); -#endif - } - // compiler-generated copy ctor is fine - // assignment is disallowed because there is a reference member + typedef URNG base_type; + typedef IntType argument_type; + typedef IntType result_type; + /** + * Constructs a random_number_generator functor with the given + * \uniform_random_number_generator as the underlying source of + * random numbers. + */ + random_number_generator(base_type& rng) : _rng(rng) {} + + // compiler-generated copy ctor is fine + // assignment is disallowed because there is a reference member - /** - * Returns a value in the range [0, n) - */ - result_type operator()(argument_type n) - { - typedef uniform_int dist_type; - return variate_generator(_rng, dist_type(0, n-1))(); - } + /** + * Returns a value in the range [0, n) + */ + result_type operator()(argument_type n) + { + BOOST_ASSERT(n > 0); + return uniform_int_distribution(0, n-1)(_rng); + } private: - base_type& _rng; + base_type& _rng; }; +} // namespace random + +using random::random_number_generator; + } // namespace boost +#include + #endif // BOOST_RANDOM_RANDOM_NUMBER_GENERATOR_HPP