lunes, 31 de marzo de 2008

Random()

JKS [jksware@gmail.com]

RANDOMIZE ();

Una serie numérica se dice que es estadísticamente aleatoria cuando no contiene patrones o regularidades reconocibles. Por ejemplo, el número Pi, tan lejos como podemos saber, exhibe aleatoriedad estadística en sus dígitos. <<en.wikipedia.org/wiki/Statistical_Randomness>>

La aleatoriedad estadística no implica necesariamente “verdadera” aleatoriedad, esto es, objetivamente impredecible, que no se puede conocer por medio de instrumentos o cálculos prácticos. La pseudoaleatoriedad es suficiente para la mayoría de los usuarios de computadoras.

Una secuencia numérica que exhiba un patrón – o comportamiento predecible – no es estadísticamente aleatoria. De acuerdo a ciertos principios matemáticos, objetos con suficientes valores – se refieren a objetos mesurables – deben necesariamente contener una estructura dada, ya que “el desorden completo es imposible”.

WINDOWS Y LINUX JUGANDO A LOS DADOS

Si bien es posible decir que las posibilidades reales para una persona de carne y hueso de repetir dos veces consecutivas la misma jugada – hablo de cualquier juego de azar – son bajísimas, ya que entran “en juego” diversas variables matemáticas como para describir un comportamiento sostenido – muchas de ellas aportadas por diferentes factores externos que no guardan relación alguna – también es posible decir que una máquina digital – simula – un comportamiento aleatorio e indefinido y es, a gran escala, una burla del concepto.

La idea de dar estas explicaciones surgió de un observación – algo enredada – que hizo uno de los comentaristas deportivos de la televisión nacional, cuando explicaba en plena competencia de salto largo femenino – Valencia 2008 – que las distancias promedio de todas las competidoras podían parecer más cortas que veces anteriores en las que se ha competido a cielo abierto y no en una sala cerrada.

En este ejemplo específico, para que una competidora al aire libre alcance una distancia mayor o menor que la que alcanzaría en iguales condiciones estando bajo techo, se pueden contar varias variables. La principal creo que sería la dirección, sentido y velocidad del viento. Bajo un viento nulo, o sea inexistente, no habría presión alguna que “impulsara”, por decir de alguna forma, a la competidora hacia delante o hacia atrás en medio del salto.

Esto mismo se puede decir de un juego de dominó: cuando se le “da agua” al juego, una característica aparentemente aleatoria, ya que no existe un control absoluto por parte de ninguno de los jugadores – sino de todos a la vez – de las fichas que están sobre la mesa, se espera que “salgan” valores totalmente diferentes a los que salieron las veces anteriores; lo que se debe esperar en realidad es una manipulación general de todo el juego. Para cualquier jugador sentado y participando del juego, esto es un comportamiento totalmente aleatorio ya que una sola persona no puede determinar el rumbo de todas las fichas. Sin embargo, sí determina el rumbo de algunas. Este solo hecho de participación le imprime al juego de dominó la característica de la pseudoaleatoriedad. Por esto es un juego y no un fenómeno natural.

Los que alguna vez estudiaron física hacia un nivel más o menos complejo, sabrán que existe un principio que describe y da un “toque” muy perspicaz a todo lo que se pueda decir de aleatoriedad.

El Principio de la Incertidumbre de Heisenberg define que – parafraseando – no existe un fenómeno en el que esté involucrado un simple observador del proceso, que no se vea a la vez modificado por el mismo. Esto quiere decir que no hay un observador pasivo, y aunque este principio fue estructurado en base de la medición del spin y momento de un electrón de un átomo, se puede “exportar” fácilmente el concepto hacia un juego de dominó, o hacia un computadora…

Quería dar esta “breve” (xD) explicación antes de pasar a ponerles el código de un algoritmo muy bien hecho que encontré en Internet, y que es alternativo al código de Linux para generación de números semialeatorios, ya que adiciona otros métodos para la obtención de los mismos, que se van agregando a lo que se llama “entropy pool” – piscina de la entropía, una especie de banco de datos de los que se sacan y depositan números aleatorios constantemente.

Les dejo en manos de la teoría de operación - el código entero lo pueden encontrar en la sección de códigos – y aclarar que este algoritmo está pensado para ser usado en servidores que tengan que generar números aleatorios muy frecuentemente; se puede utilizar para prevenir ataques criptográficos debido a que la generación de los pares de claves lo hace un algoritmo que genera números aleatorios, y no tiene gracia ninguna que estos puedan ser predecidos incluso antes de que se generen – la explicación de qué es esto se va para el artículo de PGP 2da parte.



Artículos relacionados


No hay comentarios: