random number generator c
Este tutorial describe el uso de las funciones rand () y srand () en detalle para generar números aleatorios en C ++:
Muchas veces requerimos el uso de números aleatorios en nuestra aplicación para producir simulaciones o juegos y otras aplicaciones que requieren eventos aleatorios.
Por ejemplo, en un juego de dados, sin tener eventos aleatorios, tendremos el mismo lado apareciendo cada vez que lancemos los dados dando resultados no deseados.
Por tanto, es necesario que tengamos un generador de números aleatorios a nuestra disposición. En el entorno físico, podemos generar eventos aleatorios, pero no es posible cuando se trata de computadoras.
=> Lea la serie de formación Easy C ++.
Esto se debe a que todo en las computadoras es binario, es decir, 0 o 1 (verdadero o falso) y nada intermedio. Por lo tanto, las computadoras generalmente generan eventos predecibles y no pueden generar eventos aleatorios.
En cambio, las computadoras simulan la aleatoriedad que se hace usando generador de números pseudoaleatorios (PRNG) . C ++ tiene un generador de números aleatorios y se puede utilizar con muchas de las aplicaciones.
En este tutorial, discutiremos las funciones / enfoques para generar números aleatorios en C ++ en detalle.
Lo que vas a aprender:
- Generador de números pseudoaleatorios (PRNG) en C ++
- Funciones rand y srand en C ++
- Diferencia entre rand () y srand ()
- Flotación aleatoria de C ++
- Número aleatorio de C ++ entre 0 y 1
- Número aleatorio de C ++ entre 1 y 10
- Preguntas frecuentes
- Conclusión
- Lectura recomendada
Generador de números pseudoaleatorios (PRNG) en C ++
En general, un generador de números pseudoaleatorios (PRNG) se puede definir como un programa que toma una semilla o un número inicial y lo transforma en algún otro número que es diferente de la semilla usando operaciones matemáticas.
Este proceso se lleva a cabo repetidamente tomando el último número generado cada vez. Cada vez que el número generado no está relacionado con los números anteriores. Así, este programa es capaz de generar una serie de números que parecen aleatorios.
El lenguaje C ++ viene con un generador de números pseudoaleatorios incorporado y proporciona dos funciones rand () y srand () que pueden usarse para generar números aleatorios.
Analicemos estas dos funciones en detalle.
cómo abrir un archivo jnlp
Funciones rand y srand en C ++
srand ()
Prototipo de función: void srand (semilla int sin firmar);
Parámetros: semilla: un valor entero que se utilizará como semilla por el algoritmo generador de números pseudoaleatorios.
Valor devuelto: Ninguno
Descripción: La función srand se usa para inicializar la secuencia de números pseudoaleatorios con un parámetro llamado 'semilla aleatoria'. Hace que la salida de la función rand parezca aleatoria. De lo contrario, la salida de la función rand () será la misma cada vez que la llamemos.
Por lo tanto, si sembramos el generador de números aleatorios con la función srand (), iniciará el generador desde el punto que depende del valor del argumento pasado a srand. Si configuramos el generador de números aleatorios con la hora del sistema Por ejemplo, antes de la primera llamada a la función rand (), generará los números aleatorios cada vez que ejecutemos el programa.
Tenga en cuenta que normalmente necesitamos llamar a la función srand () solo una vez antes de la llamada a la función rand () y no cada vez que generamos números aleatorios.
rand ()
Prototipo de función: int rand (vacío);
Parámetros: ninguno
Valor devuelto: Un valor entero entre 0 y RAND_MAX.
Descripción: La función rand () genera el siguiente número aleatorio en la secuencia. El número generado es el entero pseudoaleatorio entre 0 y RAND_MAX. RAND_MAX es una constante en el encabezado que generalmente se establece en el valor 32767.
Producción:
En el programa anterior, hemos generado los primeros 100 números aleatorios, dando el reloj del sistema como semilla para la función srand. En este programa, hemos utilizado tanto las funciones srand como las funciones rand. Tenga en cuenta que debido al reloj del sistema como semilla, la salida generada será diferente cada vez que ejecutemos el programa.
Diferencia entre rand () y srand ()
fila() | srand () |
---|---|
Se utiliza para generar números aleatorios. | Siembra el PRNG utilizado por la función rand (). |
Llamado tantas veces como queramos para generar los números aleatorios. | Llamado solo una vez para ver el generador de números aleatorios. |
No acepta argumentos. | Toma el parámetro que se usa para inicializar el generador de números aleatorios. |
Devuelve la secuencia de números aleatorios cada vez que se llama. | No devuelve un valor. |
Flotación aleatoria de C ++
La función rand () que hemos visto anteriormente por defecto devuelve un valor entero que puede causar un desbordamiento en ciertos casos. Por lo tanto, podemos usar float o double value. Podemos generar números aleatorios flotantes lanzando el valor de retorno de la función rand () a 'flotar'.
Por lo tanto, lo siguiente generará un número aleatorio entre float 0.0 y 1.0 (ambos inclusive).
|_+_|De manera similar, la siguiente línea generará un número aleatorio entre 1.2 y 3.4
|_+_|En nuestro siguiente ejemplo a continuación, utilizamos flotante aleatorio para generar la salida.
Número aleatorio de C ++ entre 0 y 1
Podemos usar la función srand () y rand () para generar números aleatorios entre 0 y 1. Tenga en cuenta que tenemos que convertir la salida de la función rand () al valor decimal ya sea flotante o doble.
El valor de retorno predeterminado de la función rand (), es decir, el número entero, es inadecuado para mostrar números aleatorios entre 0 y 1, que son fracciones.
El programa C ++ que se muestra a continuación muestra los primeros cinco números aleatorios entre 0 y 1.
declaración de python if en una línea|_+_|
Producción :
Vemos que la salida del programa es el número aleatorio entre 0 y 1 que son fracciones.
Si no convertimos el valor de retorno de la función rand () a flotar o duplicar, obtendremos 0 como número aleatorio.
Número aleatorio de C ++ entre 1 y 10
El siguiente ejemplo es generar números aleatorios entre 1 y 10. A continuación se muestra el programa C ++ que genera números aleatorios.
Llamamos a la función srand con el reloj del sistema y luego a la función rand con operadores del módulo 10.
|_+_|Producción:
En el programa anterior, generamos los primeros 10 números aleatorios entre 1 y 10. Tenga en cuenta que cada vez que se ejecuta el programa, generará diferentes conjuntos de números debido a que se llama a la función srand.
Preguntas frecuentes
P # 1) ¿Cuál es el archivo de encabezado para la función aleatoria en C ++?
Responder: Las funciones para generar números aleatorios, rand y srand se definen en< cstdlib > encabezado de C ++.
P # 2) ¿Qué es Rand_max en C ++?
Respuesta: RAND_MAX es una constante en el encabezado generalmente establecida en el valor 32767. El generador de números pseudoaleatorios (PRNG) genera números aleatorios entre 0 y RAND_MAX.
P # 3) ¿Cómo funciona la función aleatoria?
Responder: C ++ admite dos funciones aleatorias, es decir srand () y rand (). La función srand () inicia el generador de números aleatorios utilizado por la función rand (), que genera la secuencia de números aleatorios según la semilla inicial proporcionada.
P # 4) ¿Cómo se adapta el tiempo?
Responder: La función srand inicia el generador de números pseudoaleatorios (PRNG) utilizado por la función rand (). Es una práctica estándar utilizar el resultado de una llamada a time (0) como semilla. Esta función de hora devuelve el valor, una cantidad de segundos desde las 00:00 horas, 1 de enero de 1970, UTC (marca de tiempo UNIX actual).
Por tanto, el valor de la semilla cambia cada segundo. Por lo tanto, cada vez que se llama a srand con la función de tiempo, se genera un nuevo conjunto de números aleatorios.
Conclusión
Hemos discutido la generación de números aleatorios en detalle en este tutorial. Los lenguajes de programación o, en general, las computadoras no generan números aleatorios, ya que están diseñados para ofrecer resultados predictivos. Por tanto, necesitamos simular la aleatoriedad.
Para simular la aleatoriedad, utilizamos un generador de números pseudoaleatorios (PRNG) que está integrado en C ++. Por lo tanto, usando las dos funciones, rand () y srand (), podemos generar números aleatorios en C ++.
La función srand () se utiliza para proporcionar semilla para generar números aleatorios, mientras que la función rand () genera el siguiente número aleatorio en la secuencia.
=> Busque toda la serie de formación en C ++ aquí.
Lectura recomendada
- C # Random Number y C # Random String Generator con ejemplos de código
- Tutorial de la función principal de Python con ejemplos prácticos
- Tutorial de Unix Pipes: Pipes en la programación Unix
- Recursión en C ++
- Funciones de amigo en C ++
- Polimorfismo en C ++
- Programación orientada a objetos en C ++
- OOP Java: Introducción a la programación orientada a objetos en Java