Definido en el encabezado
voidsrand(unsigned seed );

Inicia 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 estuviera sembrado con srand(1).

Cada vez rand() se siembra con el mismo seeddebe producir la misma secuencia de valores.

srand() no se garantiza que sea seguro para subprocesos.

Parámetros

semilla el valor de la semilla

Valor de retorno

(ninguna).

notas

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

La práctica estándar es usar el resultado de una llamada para time(0) como la semilla. Sin embargo, time() devuelve un time_t valor, y time_t no se garantiza que sea un tipo integral. En la práctica, sin embargo, cada implementación importante define time_t ser un tipo integral, y esto es también lo que requiere POSIX.

Ejemplo

#include#include#includeintmain(void)srand(time(0));//use current time as seed for random generatorint random_variable =rand();printf("Random value on [0,%d]: %dn", RAND_MAX, random_variable);

Salida posible:

Random value on [02147483647]:1373858591

Referencias

  • Estándar C11 (ISO/IEC 9899:2011):
    • 7.22.2.2 La función srand (p: 346-347)
  • Norma 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

Ver también

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