logo

rand() y srand() en C++

función rand() es una función incorporada en C++ STL, que se define en el archivo de encabezado . rand() se utiliza para generar una serie de números aleatorios. El número aleatorio se genera mediante el uso de un algoritmo que proporciona una serie de números no relacionados cada vez que se llama a esta función. La función rand() se utiliza en C++ para generar números aleatorios en el rango [0, RAND_MAX).

RAND_MAX: Es una constante cuyo valor predeterminado puede variar entre implementaciones, pero se garantiza que sea al menos 32767.



Sintaxis de rand()

int rand (void);>

Parámetros de rand()

  • Esta función no toma ningún parámetro.

Valor de retorno de rand()

  • rand() devuelve un número pseudoaleatorio en el rango de [0, RAND_MAX).

Digamos que estamos generando 5 números aleatorios en C++ con la ayuda de rand() en un bucle, luego cada vez que compilamos y ejecutamos el programa nuestra salida debe ser la misma secuencia de números.

Ejemplo de rand()

C++








// C++ program to demonstrate> // the use of rand()> #include> #include> using> namespace> std;> > int> main()> {> >// This program will create some sequence of> >// random numbers on every program run> >for> (>int> i = 0; i <5; i++)> >cout <<>rand>() <<>' '>;> > >return> 0;> }>

>

>

Producción

1804289383 846930886 1681692777 1714636915 1957747793>

Complejidad de la función rand()

La complejidad temporal y espacial de la función rand () son las siguientes:

    Complejidad temporal: O(1) Complejidad espacial auxiliar: O(1)

Nota: Este programa creará la misma secuencia de números aleatorios en cada ejecución del programa.

El siguiente programa es la implementación de la función rand() para obtener un valor en el rango de 0 a N-1

C++




// C++ program to demonstrate the> // use of rand() to get value> // in a range of 0 to N-1> #include> #include> using> namespace> std;> > int> main()> {> >int> N = 100;> >// This program will create some sequence of random> >// numbers on every program run within range 0 to N-1> >for> (>int> i = 0; i <5; i++)> >cout <<>rand>() % N <<>' '>;> > >return> 0;> }> > // This code is contributed by Susobhan Akhuli>

>

>

Producción

83 86 77 15 93>

El siguiente programa es la implementación de la función rand() para obtener un valor de Upper_Bound a Lower_Bound.

C++




transmitir cadena a int
// C++ program to demonstrate> // the use of rand() to get value> // in a range of lb to ub> #include> #include> using> namespace> std;> > int> main()> {> >int> lb = 20, ub = 100;> >// This program will create some sequence of random> >// numbers on every program run within range lb to ub> >for> (>int> i = 0; i <5; i++)> >cout << (>rand>() % (ub - lb + 1)) + lb <<>' '>;> > >return> 0;> }> > // This code is contributed by Susobhan Akhuli>

>

>

Producción

66 90 38 99 88>

señor()

La función srand() es una función incorporada en C++ STL, que se define en archivo de cabecera. srand() se utiliza para inicializar generadores de números aleatorios. La función srand() establece el punto de partida para producir una serie de números enteros pseudoaleatorios. Si no se llama a srand(), la semilla rand() se establece como si se llamara a srand(1) al inicio del programa. Cualquier otro valor para la semilla establece el generador en un punto de partida diferente.

Sintaxis de srand()

void srand(  unsigned seed ); OR int  srand( unsigned int seed);>

Sembra el generador de números pseudoaleatorios utilizado por rand() con el valor semilla.

Parámetros

  • semilla: Una semilla para una nueva secuencia de números pseudoaleatorios que se devolverán mediante llamadas sucesivas a rand()

Valor de retorno

  • Esta función devuelve un número aleatorio pseudogenerado.

Nota: El generador de números pseudoaleatorios solo debe inicializarse una vez, antes de cualquier llamada a rand() y al inicio del programa. No se debe sembrar ni resembrar repetidamente cada vez que desee generar un nuevo lote de números pseudoaleatorios.

La práctica estándar es utilizar el resultado de una llamada a srand(tiempo(0)) como la semilla. Sin embargo, time() devuelve un valor time_t que varía cada vez y, por lo tanto, el número pseudoaleatorio varía para cada llamada al programa.

rand() y srand() con ejemplo

rand() y señor() comparación

Ejemplo de srand()

C++




// C++ program to generate random numbers> #include> #include> #include> using> namespace> std;> > int> main()> {> >// This program will create different sequence of> >// random numbers on every program run> > >// Use current time as seed for random generator> >srand>(>time>(0));> > >for> (>int> i = 0; i <4; i++)> >cout <<>rand>() <<>' '>;> > >return> 0;> }>

>

>

Producción

1326865685 1413967981 1967280748 919663823>

Complejidad del tiempo : O(N), donde N es el número de números aleatorios que se generarán.

Nota: Este programa creará una secuencia diferente de números aleatorios en cada ejecución del programa.

¿Cómo se relacionan srand() y rand() entre sí?

srand() establece la semilla que utiliza rand para generar números aleatorios. Si no llama a srand antes de su primera llamada a rand, es como si hubiera llamado a srand(1) para establecer la semilla en uno.
En breve, srand() — Establecer semilla para la función rand() .