Random number generation (C++)

Let’s generate 10 integers with a uniform distribution between 1 and 6.


Historic approach

#include <cstdlib>
#include <ctime>
#include <iostream>

int main()
{
    // Set up generator with seed
    srand(time(NULL));

    for (int n = 0; n != 10; ++n)
        std::cout <<  rand() % 6 + 1 << ' ';
    std::cout << '\n';
}

Only uniform distribution provided. 👎


Modern approach

#include <iostream>
#include <random>

int main()
{
    // Set up generator with seed
    std::mt19937 gen(std::random_device{}());

    // Set up the distribution you want
    std::uniform_int_distribution<> dist(1, 6);

    for (int n = 0; n != 10; ++n)
        std::cout << dist(gen) << ' ';
    std::cout << '\n';
}

Multiple distributions provided. 👍


Performance: FlameGraph (Docker)