http://martin.com.uy/wp-content/themes/martinuy2/live/proxy.php?url_especifica=
0
28
Nov
2010

Generación de números aleatorios en C

Generación de números aleatorios en C:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(int argc, char* argv[])
{
      int i;
      long numero;
      srand(time(NULL));
 
      for(i = 0; i < 100; i++){
            numero = rand();
            printf("%li\n", numero);	
      }
      return 0;
}


La función rand() genera un número a partir de otro anterior; empezando por una semilla inicial y realizando una serie compleja de operaciones para obtener el siguiente. Hay una misma semilla inicial en cada ejecución del programa, lo que lleva a que se generen secuencias iguales (predecibles). Para solucionar esto, nos valemos de la función srand() que dada una semilla, cambia el número inicial de rand(). Obviamente, si damos siempre la misma semilla a srand() estaríamos en la misma situación. Para eso utilizamos time(NULL), que devuelve el microtime del sistema (en cada instante distinto).

Para el caso en que se quieran números aleatorios en el intervalo [0, 1]:

int i;
int array[100];
double r;
double numero;
srand(time(NULL));
for(i = 0; i < 100; i++){
	numero = (double)(rand()) / ((double)(RAND_MAX));
	printf("%G\n", numero);	
}

Escribir un comentario