La distribución discreta es bastante útil para esta tarea. También está disponible en y funciona como sigue: std::mt19937_64 gen; std::discrete_distribution dist = { 5, 2, 4 }; for (int i = 0; i < 100; ++i) { std::cout << dist(gen) << "\n"; } En el ejemplo anterior, el índice 0 tiene peso 5, el índice 1 tiene peso 2 y el índice 2 tiene peso 4. La suma de los pesos es 11, entonces: * El entero 0 tiene 5/11 de probabilidad de ser generado. * El entero 1 tiene 2/11 de probabilidad de ser generado. * El entero 2 tiene 4/11 de probabilidad de ser generado.