srand() + time() en Linux
Alvaro Herrera
alvherre en alvh.no-ip.org
Mie Oct 11 08:59:28 CLT 2006
Pablo Cruz Navea escribió:
> ¿De qué otra forma se podría obtener aleatorios binarios?
Para que quieres los numeros? Si tu aplicacion depende de tener una
buena fuente de numeros aleatorios, tendrias que dedicarle mucho tiempo
a estudiar el tema. (Por ejemplo criptografia). Si es algo menos
critico, entonces cualquier receta que te de numeros mas o menos
aleatorios es suficiente.
Asumo que tu caso es el segundo, es decir, no es _tan_ importante que la
aleatoriedad sea de muy buena calidad.
> 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?
Es buena idea, siempre y cuando sustituyas el 2000 por RAND_MAX y el
1000 por RAND_MAX/2. Lo malo de esto es que es muy lento. Una idea un
poco mejor podria ser hacer bit-shifting para obtener uno de los bits de
mas arriba, como te sugirieron en otra respuesta a este correo. Eso es
mucho mas rapido.
--
Alvaro Herrera Developer, http://www.PostgreSQL.org
"El sabio habla porque tiene algo que decir;
el tonto, porque tiene que decir algo" (Platon).
Más información sobre la lista de distribución Linux