52 std::random_device rd;
65unsigned ring(
unsigned base,
unsigned width,
unsigned n)
72 return random::between(0u, n);
74 const auto min_val(
base + n - width / 2);
76 return (min_val + random::between(0u, width)) % n;
base_t base(const value_t &v)
A simple shortcut for casting an value_t to base_t.
The main namespace for the project.
unsigned ring(unsigned base, unsigned width, unsigned n)
Returns a random number in a modular arithmetic system.
void seed(unsigned s)
Initalizes the random number generator.
engine_t engine
The shared random engine generator.
void randomize()
Sets the shared engine to an unpredictable state.
vigna::xoshiro256ss engine_t
xoshiro256** (XOR/shift/rotate) is an all-purpose, rock-solid generator (not a cryptographically secu...