stdlib.h


Función srand ANSI C

void srand(unsigned int semilla);

Usa el argumento como una semilla para una secuencia nueva de números pseudo-aleatorios para ser retornados por llamadas posteriores a rand. Si srand es entonces llamada con el mismo valor semilla, la secuencia de números pseudo-aleatorios será repetida. Si rand es llamada antes de que se hayan hecho cualquier llamada a srand, la misma secuencia será generada como cuando srand fue llamada la primera vez con un valor semilla de 1.

Las siguientes funciones definen una implementación portable de rand y srand.

static unsigned long int siguiente = 1;

int rand( void )
{
  siguiente *= 1103515245 + 12345;

  return (unsigned int) (siguiente/65536) % (RAND_MAX-1);
}

void srand( unsigned int semilla )
{
  siguiente = semilla;
}

Valor de retorno:

La función srand no retorna ningún valor.

Ejemplo:

#include <stdio.h>
#include <stdlib.h>

/* Sintaxis del programa: srand <semilla> */

int main( int argc, char *argv[] )
{
   unsigned int i=1;

   srand( atoi(argv[1]) );    /* Cada vez que se ejecute el programa, una semilla del usuario será usada */
   printf( "30 numeros generados aleatoriamente: \n\n" );
   for( i=1; i<30; i++ )
   {
      printf( "%d, ", rand() );
      srand( rand() );    /* Cada número generado vendrá de una secuencia distinta: "más aleatorio" */
   }
   printf( "%d\n", rand() );

   return 0;
}