srand() + time() en Linux

Roberto Bonvallet rbonvall en alumnos.inf.utfsm.cl
Mie Oct 11 04:01:41 CLT 2006


Pablo Cruz Navea escribió:
> ¿De qué otra forma se podría obtener aleatorios binarios? Para dejar
> de usar el rand () % 2 hice algo como esto:
> 
> ....
> srand (....);
> val = rand () % 2000;
> if (val >= 1000)
>   num = 1;
> else
>   num = 0;
> ....
> 
> Pero eso dependerá de la probabilidad con que los números de rand () %
> 2000 sean mayores o iguales a 1000 (o bien menores que 1000). ¿Es
> buena idea esto?

Al usar "módulo algo" estás quedándote con los últimos bits del número, que
justamente son los menos aleatorios.

En esta página explican por qué no es una buena idea:

    http://www.merrymeet.com/jon/usingrandom.html

En ésta sugieren como hacerlo:

    http://www.library.cornell.edu/nr/bookcpdf/c7-4.pdf

(Es un capítulo del "Numerical Recipes", lo puedes encontrar en la
biblioteca de la UTFSM)

-- 
Roberto Bonvallet


Más información sobre la lista de distribución Linux