Todoexpertos.com
http://www.todoexpertos.com
La respuesta está en Internet
Información de la pregunta
Título: Numeros aleatorios en C de linux
Experto: dfmarin
Valoración: 5
Fecha: 02/12/2002


Numeros aleatorios en C de linux
Cómo genero numeros aleatorios en C de linux?. Utilizo la funcion random() y srandom y me arroja siempre el mismo valor!!. Gracias.F/

re: aleatorios
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 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 #include #include 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

Pregunta finalizada. Valoración: 5.
Excelente. Una fantástica solución.


Volver al mensaje
http://www.todoexpertos.com/categorias/ciencias-e-ingenieria/ingenieria-informatica/respuestas/291171/numeros-aleatorios-en-c-de-linux