El 6 de junio de 2011 14:23, Andres Morales <[email protected]> escribió:

> Yo no lo considero así, con srand estás generando la semilla del número
> aleatorio, y la misma la estás generando en el momento con un time, por lo
> tanto es igual de aleatoria la semilla si se encuentra fuera o dentro de la
> función. De todas maneras, yo la pondría fuera de la función, al principio
> del main(), solo para ser ordenado y también para poder tener n funciones
> que generaran números aleatorios distintas sin tener que utilizar srand en
> cada una de ellas.

Yo tendría a estar de acuerdo con el profesor. No es necesario
inicializar el generador de números al azar más de una vez. Hacerlo en
realidad desvirtua el funconamiento del algoritmo.

No es que el número que te salga no sea al azar, sino que es mucho más
predecible.

Tratñandose de algo sencillo como un "dado", puede que no importe pero
como en este caso el ejercicio no se trata de hacer un dado en sí sino
de aprender a programar, es conveniente que el alumno sepa que si bien
en este caso daría más o menos lo mismo, no es conveniente que quede
con la idea de que así está bien, porque algún día podría darse el
caso en que hacer eso suponga una vulnerabilidad en algún sistema.

Si yo se que tu programa inicializa el generador de números al azar
con una marca de tiempo siempre antes de obtener el número, puedo
hacer un programa que pruebe unos cuantos miles de marcas de tiempo
"razonables" y estoy seguro de que alguno de los números que obtenga
será el tuyo.

Claro que después de ver la manera en que la gente de Sony elige
números al azar, este programa es un lujo.

http://psx-scene.com/tmp/psx-scene/pictures/EAsaP.png
http://www.youtube.com/watch?v=hcbaeKA2moE



--
Qapla'
Alejandro Vargas

Responder a