29.6 Random number generation [rand]
A
random_device
uniform random bit generator
produces nondeterministic random numbers
.If implementation limitations
prevent generating nondeterministic random numbers,
the implementation may employ a random number engine
.
class random_device {
public:
using result_type = unsigned int;
static constexpr result_type min() { return numeric_limits<result_type>::min(); }
static constexpr result_type max() { return numeric_limits<result_type>::max(); }
explicit random_device(const string& token = implementation-defined);
result_type operator()();
double entropy() const noexcept;
// no copy functions
random_device(const random_device& ) = delete;
void operator=(const random_device& ) = delete;
};
explicit random_device(const string& token = implementation-defined);
Effects: Constructs a
random_device
nondeterministic uniform random bit generator object
. The semantics and default value of the
token
parameter are
implementation-defined
.Throws: A value of an
implementation-defined type
derived from
exception
if the
random_device could not be initialized
. double entropy() const noexcept;
Returns: If the implementation employs a random number engine,
returns
0.0. Otherwise, returns an entropy estimate
for the random numbers returned by
operator(),
in the range
min()
to
.result_type operator()();
Returns: A nondeterministic random value,
uniformly distributed
between
min() and
max(),
inclusive
. It is
implementation-defined
how these values are generated
.Throws: A value of an
implementation-defined
type derived from
exception
if a random number could not be obtained
.