|
Bueno, deberias leer el manual acerca de la funcion "random(3)":
[linux] $ man random
_ _ _ _ _ _
RANDOM(3) Manual del Programador de Linux RANDOM(3)
NOMBRE
random, srandom, initstate, setstate - generador de
números aleatorios.
SINOPSIS
#include <stdlib.h>
long int random(void);
void srandom(unsigned int semilla);
char *initstate(unsigned int semilla, char *estado, int n);
char *setstate(char *estado);
DESCRIPCIÓN
La función random() emplea un generador no lineal aditivo
con retroalimentación de números aleatorios utilizando una
tabla predeterminada de 31 enteros largos para devolver
números pseudo-aleatorios sucesivos en el rango de 0 a
RAND_MAX. El periodo de este generador de números aleato
rios es muy grande, aproximadamente 16*((2**31)-1).
_ _ _ _ _ _
Te falta (por lo que sospecho) inicializar la funcion "drand48()",
con una semilla, eso se hace con la funcion "srand48()", si usas la
misma semilla siempre, vas a obtener la misma secuencia de numeros
aleatorios, por lo que es mejor usar la hora actual (hora/min/seg),
como semilla, asi siempre seran secuencias diferentes de numeros
aleatorios (o pseudo-aleatorios para ser mas precisos!):
[linux] $ man drand48
En ultimas, deberias hacer algo muy parecido a esto:
_ _ _ _ _ _
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main() {
time_t tiempo;
double aleatorio; /* defino la variable */
tiempo = time((time_t *)0); /* 0 = ahora */
srand48(tiempo); /* inicializacion */
aleatorio = drand48();
printf ("%12.6f\n", aleatorio);
}
_ _ _ _ _ _
hoy, "drand48" y compañia son consideradas obsoletas, recomiendan
el uso de "rand", pero creo que deberias evaluar los resultados de
las distintas funciones y verificar cual se distribuye de acuerdo a
tus necesidades.
[linux] $ man 3 rand
_ _ _
Diego Fernando Marin
[] http://www.dfmarin.com
|