Busca un método para generar uniformemente números aleatorios dentro de un rango específico [mínimo, máximo].
Defectos con rand
Es posible que su implementación actual usando rand() y el operador de módulo no garantice una distribución uniforme, ya que su comportamiento depende de RAND_MAX y el rango en sí.
C 11 y Generación de Rango Uniforme
En C 11, std::uniform_int_distribution ofrece una solución adaptada a esta necesidad:
#includestd::uniform_int_distribution distr(min, max); std::random_device rand_dev; std::mt19937 generator(rand_dev()); int random_number = distr(generator);
Características adicionales de
El encabezado
Barajado de contenedores
Para barajar un contenedor, emplee std::shuffle:
#include#include std::vector vec = {4, 8, 15, 16, 23, 42}; std::random_device random_dev; std::mt19937 generator(random_dev()); std::shuffle(vec.begin(), vec.end(), generator);
Boost.Random
Si no es factible usar un compilador C 11 , considere Boost.Random, que presenta una interfaz similar a su contraparte C 11.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3