| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | #ifndef BOOST_UTILITY_DETAIL_MINSTD_RAND_HPP_INCLUDED#define BOOST_UTILITY_DETAIL_MINSTD_RAND_HPP_INCLUDED// Copyright 2017 Peter Dimov//// 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//// An implementation of minstd_rand that does not require// the Random library#include <boost/cstdint.hpp>namespace boost{namespace detail{class minstd_rand{private:    boost::uint_least32_t x_;    enum { a = 48271, m = 2147483647 };public:    minstd_rand(): x_( 1 )    {    }    explicit minstd_rand( boost::uint_least32_t x ): x_( x % m )    {        if( x_ == 0 )        {            x_ = 1;        }    }    boost::uint_least32_t operator()()    {        boost::uint_least64_t y = x_;        y = ( a * y ) % m;        x_ = static_cast<boost::uint_least32_t>( y );        return x_;    }};} // namespace detail} // namespace boost#endif // #ifndef BOOST_UTILITY_DETAIL_MINSTD_RAND_HPP_INCLUDED
 |