20 #ifndef RIPPLE_BASICS_RANDOM_H_INCLUDED
21 #define RIPPLE_BASICS_RANDOM_H_INCLUDED
23 #include <ripple/beast/xor_shift_engine.h>
35 #ifndef __INTELLISENSE__
39 "The Ripple default PRNG engine must return an unsigned integral type.");
44 "The Ripple default PRNG engine return must be at least 64 bits wide.");
50 template <
class Engine,
class Result =
typename Engine::result_type>
83 seed = distribution(seeder);
111 template <
class Engine,
class Integral>
115 rand_int(Engine& engine, Integral min, Integral max)
125 template <
class Integral>
132 template <
class Engine,
class Integral>
138 return rand_int(engine, Integral(0), max);
141 template <
class Integral>
148 template <
class Integral,
class Engine>
157 template <
class Integral =
int>
167 template <
class Byte,
class Engine>
171 detail::is_engine<Engine>::value,
175 return static_cast<Byte
>(rand_int<Engine, std::uint32_t>(
181 template <
class Byte = std::u
int8_t>
194 template <
class Engine>
210 #endif // RIPPLE_BASICS_RANDOM_H_INCLUDED