This header introduces random number generation facilities.
This library allows to produce random numbers using combinations
of generators and distributions:   • Generators: Objects that
generate uniformly distributed numbers.   • Distributions:
Objects that transform sequences of numbers generated by a
generator into sequences of numbers that follow a specific
random variable distribution, such as uniform, Normal or
Binomial.  Distribution objects generate random numbers by means
of their operator() member, which takes a generator object as
argument: std::default_random_engine generator;
std::uniform_int_distribution<int> distribution(1,6); int
dice_roll = distribution(generator);  // generates number in the
range 1..6   For repeated uses, both can be bound together: auto
dice = std::bind ( distribution, generator ); int wisdom =
dice()+dice()+dice();  Except for random_device, all standard
generators defined in the library are random number engines,
which are a kind of generators that use a particular algo