stdlib.h

Para usar todas las funciones de ésta biblioteca se debe tener la si
Las funciones de la biblioteca pueden ser agrupadas en tres categorías básicas:

El uso de todas las funciones es sencillo
 * Aritméticas;
 * Números aleatorios; y
 * Conversión de cadenas.

= = Los números aleatorios son útiles en programas que necesitan simular eventos aleatorios, tales como juegos, simulaciones y experimentos. En la práctica ninguna función produce datos aleatorios verdaderos -- las funciones producen números **pseudo-aleatorios**. Los números aleatorios son calculados a partir de una fórmula dada (los distintos generadores usan diferentes fórmulas) y las secuencias de números que son producidas se repiten. Una **semilla (seed)** es usualmente inicializada para que la secuencia sea generada. Por lo tanto, si la semilla es siempre inicializada con el mismo valor todo el tiempo, el mismo conjunto será siempre calculado. Una técnica común para introducir más aleatoriedad en el generador de números aleatorios es usando el tiempo y la fecha para inicializar la semilla, ya que éste siempre estará cambiando. Hay muchas funciones de números (pseudo) aleatorios en la biblioteca estándar. Todas ellas operan con la misma idea básica pero generan secuencias diferentes de números (basadas en funciones generadoras diferentes) sobre rangos diferentes de números. El conjunto más simple de funciones es: code int rand(void); void srand(unsigned int semilla);

code

Un ejemplo sencillo del uso del tiempo de la fecha es inicializando la semilla a través de una llamada: code srand( (unsigned int) time( NULL ) );
 * //rand// La función devuelve un entero pseudo-aleatorio entre 0 y [[image:http://www.fismat.umich.mx/mn1/manual/img24.png width="55" height="36" align="MIDDLE" caption="$2^{15}-1$"]] (RAND_MAX).
 * //srand// Establece su argumento como la semilla de una nueva serie de enteros pseudo-aleatorios.

code El siguiente programa muestra el uso de estas funciones para simular un paquete de tarjetas que esta siendo revueltas. code /*
 * Se usan numeros aleatorios para revolver las "tarjetas" de la baraja.
 * El segundo argumento de la funcion indica el numero de tarjetas.
 * La primera vez que esta funcion es llamada, srand es
 * llamada para inicializar el generador de numeros aleatorios.
 * 1) include 
 * 2) include 
 * 3) define VERDADERO   1
 * 4) define FALSO  0
 * 1) define FALSO  0

void intercambiar( int *baraja, int n_cartas ) {   int     i;    static  int     primera_vez = VERDADERO;

/*   ** Inicializar el generador de numeros con la fecha actual ** si aun no se ha hecho. */   if( primera_vez ){ primera_vez = FALSO; srand( (unsigned int)time( NULL ) ); }

/*   ** "intercambiar" empleando pares de cartas. */   for( i = n_cartas - 1; i > 0; i -= 1 ){ int    alguno; int    temp;

alguno = rand % i;       temp = baraja[ alguno ]; baraja[ alguno ] = baraja[ i ]; baraja[ i ] = temp; } }

code

==