lunes, 25 de octubre de 2010

Las funciones drand48() y srand48()

¿Y si queremos un número aleatorio con decimales?. Tenemos la función drand48() que nos devuelve un número aleatorio con decimales entre 0.0 (incluido, puede salir el 0,0) y 1.0 (excluido, nunca saldrá 1.0). A partir de ahí es fácil transformarlo al rango que queramos. Si queremos un rango entre 10.0 y 20.0 (o entre M y N siendo N mayor que M y ambos con decimales, aunque sean .0)

#include
...
numero = drand48() * (20.0-10.0) + 10.0;
numero = drand48() * (N-M) + N;

De la misma forma que antes, la secuencia de números aleatorios se repetirá cada vez que ejecutemos nuestro programa y de igual manera, tenemos manera de cambiar la "semilla" de esa secuencia. Hay que llamar a la función srand48() pasándole un entero que sea disntinto en cada ejecución del programa. Nuevamente, tenemos las dos opciones anteriores

srand48(time(NULL));
srand48(getpid());

No hay comentarios:

Publicar un comentario