Cómo generar flotadores aleatorios en C ++

Cómo generar flotadores aleatorios en C ++

Se pueden usar varias técnicas en C ++ para producir carrozas al azar. Para una variedad de aplicaciones, incluidas las simulaciones y la producción de números aleatorios para las pruebas, podría ser beneficioso generar carrozas al azar Cª++. Este artículo pasará por diferentes técnicas para crear carrozas al azar Cª++.

Números flotantes aleatorios en c++

Se pueden generar flotadores al azar en C ++ usando dos formas.

    • Usando la función rand ()
    • Uso de std :: uniform_real_distribution

1: usando la función rand ()

Podemos generar carrozas al azar mediante el estándar de la biblioteca C ++ rand () función. Podemos generar un entero a través de rand () función, convertirlo en un flotador y luego úselo para generar carrozas al azar. Para hacer esto, podemos dividir el entero generado por un gran número, para obtener un número entre 0 y 1. A flotador al azar Luego se puede obtener multiplicando este valor por el rango deseado de flotadores. Por ejemplo, el siguiente código se puede usar para producir un flotador al azar entre 0 y 1:

#incluir
#incluir
#incluir
int main ()

srand (tiempo (nulo));
para (int i = 0; i < 10; i++)
flotante r = rand () / static_cast(Rand_max);
std :: cout << r << std::endl;

regresar 0;


En el código anterior, el rand () la función se usa para generar 10 Valores de punto flotante aleatorios entre 0 y 1, y el tiempo() la función se usa para sembrar el generador de números aleatorios. El rand () El método genera un número que es completamente aleatorio y se encuentra entre 0 y rand_max. Para garantizar que la secuencia de números aleatorios sea única cada vez que se ejecuta el programa, el srand (tiempo (nulo)) la función crea la semilla para el generador de números aleatorios dependiendo de la hora actual.

Producción



Sin embargo, utilizando el rand () técnica para generar carrozas al azar tiene una serie de limitaciones. Los números no son realmente aleatorios, ya que se empleó un algoritmo para generarlos. La distribución de los valores generados tampoco es uniforme ya que ciertos valores se producen con más frecuencia que otros.

2: Uso de std :: uniform_real_distribution

El uso de la biblioteca aleatoria C ++ 11 es un método adicional para producir carrozas al azar. Para producir números aleatorios de diferentes tipos, esta biblioteca ofrece varias distribuciones. Podemos usar el uniforme_real_distribución distribución para producir carrozas al azar. Esta distribución produce carrozas al azar Dentro de un rango dado utilizando dos argumentos: un valor mínimo y un valor máximo.

Eche un vistazo a este código para generar carrozas al azar usando uniforme_real_distribución.

#incluir
usando el espacio de nombres STD;
int main ()

default_random_engine rand_number;
uniforme_real_distribución Distribución (0.0,5.0);
para (int i = 1; i < 10; i++)
cout << distribution(rand_number) << '\n';

regresar 0;


En el código anterior, estamos usando la biblioteca aleatoria que crea 5 punto flotante valores entre 0 y 4. Genera una distribución de objeto de distribución uniforme con un rango de [0.0, 5.0] y un objeto de motor de número aleatorio predeterminado rand_number. El bucle for el objeto de distribución y el motor Gen para producir 5 enteros aleatorios, y luego usa cout para mostrarlos en la consola.

Producción



El problema con el uso std :: uniform_real_distribution es que no podemos producir ninguna secuencia aleatoria, lo que da como resultado secuencias similares cada vez. La frecuencia o probabilidad en un rango específico se puede calcular utilizando este enfoque, pero en una gran cantidad de pruebas.

Conclusión

En C ++, hay varios enfoques para producir carrozas al azar. Una estrategia puede ser más apropiada que las otras dependiendo de las circunstancias. La clase de distribución real uniforme en la biblioteca aleatoria C ++ 11 proporciona una función miembro que genera valores continuos distribuidos uniformemente o números reales aleatorios desde un rango de entrada. El rand () la función ofrece un método directo para producir carrozas al azar. La técnica seleccionada dependerá en última instancia de las necesidades del programador y de las demandas de su software.