Agregar comentarioRegresarIr al inicio del exploradorIr a la página principal
Aleatorio y pseudoaleatorio

Creación: 2012-12-26 13:10

Última edición: 2014-03-09 16:02

Lo aleatorio o azar es lo que sucede sin poder predecirse.

En la computación no existe la aleatoriedad real. Las máquinas siempre siguen un algoritmo que tienen programado.

¿Haz notado que algunos juegos o programas cuando los usas de nuevo no siempre pasa lo mismo? ¿Te ha pasado que al reiniciar una partida del juego el oponente no siempre hace lo mismo?

Entonces ¿cómo es qué mi juego favorito u otros programas varían su comportamiento (o historia)?

Pues se debe a que tratan de simular la aleatoriedad con algoritmos específicos para ello.

A estos algoritmos se les conoce como generadores de números pseudoaleatorios. Hay algunos muy buenos que pueden asemejar el comportamiento de la aleatoriedad.

La mayoría de estos algoritmos necesita una semilla, que es el valor inicial para el algoritmo. Dependiendo de la semilla se obtiene una secuencia de números pseudoaleatoria. Como es obvio esto se puede representar como una función

Código
N = pseudoaleatorio(s)

Donde:

    N = número pseudoaleatorio generado
    s = semilla



Como los generadores de números pseudoaleatorios realmente son algoritmos que tratan de generar números de manera distribuida entre el rango de posibles números te puedes dar cuenta que si usas siempre la misma semilla la secuencia de números generados siempre será la misma.

Estos generadores, en el mundo de la computación, tienen muchas aplicaciones desde juegos, robótica, juguetes, hasta la seguridad informática donde son muy importantes.

Precisamente es en la seguridad informática donde adquieren mayor importancia estos generadores de números pseudoaleatorios.

En esta área de la seguridad se requiere que los algoritmos sean buenos y que no permitan predecir el siguiente número o la semilla, ya que si tienes la semilla se puede obtener toda la secuencia actual y futuros números lo cual rompe la seguridad.

Para mejorar los resultados de los generadores de números aleatorios se trata de obtener semillas del tiempo (hora actual), de las teclas pulsadas por el usuario o movimientos del ratón. Incluso cuando se generan los pares de llaves en los cifrados asimétricos se trata de obtener casi todos los números de la aleatoriedad del usuario (pidiendo que se mueva el ratón o presionen teclas al azar).

Ahora ¿qué pasa si necesitamos para alguna aplicación datos realmente aleatorios? podemos recurrir al truco de leer movimientos del ratón o el teclado, incluso se podría leer datos del ambiente usando el micrófono (mediante la tarjeta de sonido). Estas son buenas opciones pero requieren cierto esfuerzo y puede que no sea lo más conveniente. En casos cómo este existe una página llamada random.org que ofrece el servicio de generar números aleatorios reales y que pueden ser consumidos gratuitamente (con cierto limite).

¿Cómo es posible que una página WEB (que a final de cuentas es una máquina) genere números aleatoriamente? Es posible ya que obtienen ruido de la atmósfera mediante sensores que luego es convertido a voltajes y luego a bits y luego a números aleatorios.

Les recomiendo el sitio y si necesitan más información acerca de números aleatorios y pseudoaleatorios en la misma página hay mucha información al respecto.

Espero que ahora entiendan la diferencia entre aleatorio y pseudoaleatorio.

www.random.org

Agregar comentarioRegresarIr al inicio del exploradorIr a la página principal