Namespaces
Variants

srand

From cppreference.net
Definido en el encabezado <stdlib.h>
void srand ( unsigned seed ) ;

Inicializa el generador de números pseudoaleatorios utilizado por rand() con el valor seed .

Si rand() se utiliza antes de cualquier llamada a srand() , rand() se comporta como si hubiera sido inicializada con srand ( 1 ) .

Cada vez que rand() se inicializa con la misma seed , debe producir la misma secuencia de valores.

srand() no está garantizado que sea seguro para hilos.

Contenidos

Parámetros

seed - el valor de semilla

Valor de retorno

(ninguno)

Notas

En términos generales, el generador de números pseudoaleatorios solo debe inicializarse una vez, antes de cualquier llamada a rand() , y al inicio del programa. No debe inicializarse repetidamente, ni reinicializarse cada vez que se desee generar un nuevo lote de números pseudoaleatorios.

La práctica estándar es utilizar el resultado de una llamada a time ( 0 ) como semilla. Sin embargo, time() devuelve un valor time_t , y time_t no está garantizado que sea un tipo integral. En la práctica, sin embargo, todas las implementaciones principales definen time_t como un tipo integral, y esto es también lo que requiere POSIX.

Ejemplo

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
    srand(time(NULL)); //usar el tiempo actual como semilla para el generador aleatorio
    int random_variable = rand();
    printf("Random value on [0,%d]: %d\n", RAND_MAX, random_variable);
}

Salida posible:

Random value on [0 2147483647]: 1373858591

Referencias

  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.22.2.2 La función srand (p: 252-253)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.22.2.2 La función srand (p: 346-347)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.20.2.2 La función srand (p: 312-313)
  • Estándar C89/C90 (ISO/IEC 9899:1990):
  • 4.10.2.2 La función srand

Véase también

genera un número pseudoaleatorio
(función)
valor máximo posible generado por rand ( )
(constante macro)