# Modern C++ idoms and recipes

meshell
27.2K views

## Pseudo-random number generation

The random number library provides classes that generate random and pseudo-random numbers. The library contains two types of components:

• Engines, which are generators of random numbers (both pseudo-random number generators, which generate integer sequences with a uniform distribution, and true random number generators if available)
• Distributions which convert the output of random number engines into various statistical distributions

#### Random number engines

All engines (except the random_device) produce integer numbers in a uniform distribution using seed data as entropy source.

#### Random number distributions

Random number distributions post-processe the output of an random number engine in such a way that the resulting output is distributed according to a defined statistical probability density function.

### Example

The follwing example prints the uniform distribution of an random generator.

#### TODO

Play around with different engines and distributions.

play around with different engines and distributions.
#include <functional>
#include <map>
#include <algorithm>
#include <iostream>
#include <random>
#include <iomanip>
// Taken from "Modern C++ Programming Cookbook" by Marius Bancila
void generate_and_print(std::function<int()> rnd_generator,
const int iterations = 10000) {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX