#include <iostream>
#include <vector>
#include <functional>
#include <random>

void a() { std::cout << "a "; }
void b() { std::cout << "b "; }
void c() { std::cout << "c "; }
void d() { std::cout << "d "; }
void e() { std::cout << "e "; }

int main()
{
    std::vector<std::function<void()>> functions = {a,b,c,d,e};

    std::random_device rd;
    std::mt19937 gen(rd());
    std::discrete_distribution<> d({10, 10, 10, 1, 10});

    // call them randomly (with d() 10 times less likely)
    for(int n = 0; n < 30; ++n)
        functions[d(gen)]();
}
