Al principio era aleatorio. Cualquiera que se haya metido alguna vez en la programación, aunque sea por hobby, seguramente recordará que, en todas las guías “para principiantes”, de las primeras típicas que aparecen tras el omnipresente “Hola mundo”, siempre aparecía alguna rutina que implicaba la instrucción aleatoria.
Por lo general, esta rutina consistía en invocar una llamada a una función, a menudo bajo el nombre Rand () o Random (), pasando como parámetro una denominada variable semilla. La función de la semilla es permitir que la rutina Random genere diferentes números aleatorios, evitando devolver siempre el mismo número.
La imprevisibilidad de una tirada de dados
La función Random () se utilizó inmediatamente en los contextos más variados en los que era necesario introducir el elemento de aleatoriedad en una secuencia numérica o alfanumérica, hasta que se comprendió que, después de un cierto número de generaciones, era difícil garantizar que los resultados arrojados no comenzaran a repetirse siguiendo patrones que pudieran identificarse con mayor o menor facilidad.
Por lo tanto, nació una verdadera búsqueda para desarrollar un algoritmo generador de números random que tendieran a una irrepetibilidad cada vez mayor de las secuencias en cuestión. Se desarrollaron varios algoritmos que, con un compromiso de rendimiento aceptable, podían garantizar una aleatoriedad constante de los resultados.
De Random a RNG
La búsqueda continua de mejoras en la generación aleatoria dio origen a la familia de software RNG, es decir, Random Number Generator o Generador de Números Random. Los RNG son programas especializados que crean resultados impredecibles, tanto en formato alfanumérico como en formatos de datos más estructurados. Algunos de los primeros usos del RNG fueron en los videojuegos, donde se utilizaban para introducir el elemento de imprevisibilidad en las rutinas de comportamiento de las primeras inteligencias artificiales rudimentarias de los personajes. Luego, los RNG encontraron una aplicación masiva en los programas de administración de contraseñas, para garantizar en la medida de lo posible la irrepetibilidad de las secuencias alfanuméricas utilizadas como claves de autenticación.
Aplicación del Generador de Números Random en ciberseguridad
De hecho, es precisamente en el campo de la criptografía donde los RNG encontraron un uso considerable. La criptografía se utiliza en varios contextos de seguridad informática: en particular, siempre que es necesario utilizar canales de comunicación seguros protegidos del acceso de personas no autorizadas, se utilizan combinaciones cifradas. Estas combinaciones cifradas se basan en gran medida en el uso de algoritmos RNG que evitan cualquier tipo de colisión en los valores de las cadenas alfanuméricas generadas.
Generador de Números Random y contratos inteligentes
Con la llegada de blockchain, se hizo necesario utilizar sistemas RNG también para garantizar la seguridad de los contratos inteligentes. Sin embargo, las cadenas de bloques no demostraron ser un entorno adecuado para utilizar este tipo de algoritmos: las cadenas de bloques son, por definición, deterministas, es decir, son entidades lógicas que para una misma entrada siempre garantizan la producción de una salida idéntica.
Esta característica hacía que los algoritmos de RNG fueran inutilizables directamente en las máquinas EVM (Ethereum Virtual Machine, la plantilla, por así decirlo, para muchas implementaciones de blockchain) porque corrían demasiado riesgo de ser explotados por piratas informáticos o scripts maliciosos. Para obtener una generación de números aleatorios realmente fiable, era necesario recurrir a oráculos, utilizando el sistema RNG pseudoaleatorio. Uno de los métodos más utilizados en este sentido es la VRF (Función aleatoria verificable) desarrollado por Chain Link, que utiliza una combinación de funciones dentro y fuera de la cadena para garantizar la no reproducibilidad de la generación aleatoria.
Repercusiones en el sector Fintech
Con la creciente integración entre Fintech y blockchain, y gracias al éxito obtenido por la tokenización de los activos en RWA (Real World Asset, es decir, el uso de soluciones blockchain para negociar activos reales), el quid de la colisión de los resultados producidos por el RNG es un tema cada vez más candente, tanto por sus repercusiones en el ámbito de la seguridad como por el funcionamiento de los bots o scripts automatizados de gestión de posiciones.
Se desarrollaron interesantes modelos de aprendizaje automático, que se utilizan para pronosticar la volatilidad de activos como acciones o materias primas, que utilizan elementos de generación aleatoria para construir escenarios probables de predicción, como el algoritmo Random Forest.
El algoritmo Random Forest
El algoritmo Random Forest es una extensión del método de embolsado porque utiliza la aleatoriedad para crear un bosque de árboles de decisión no correlacionados. La aleatoriedad funcional, también conocida como método de subespacio aleatorio, garantiza una baja correlación entre los árboles de decisión, que consideran todas las subdivisiones posibles de las funcionalidades, mientras que los bosques aleatorios seleccionan solo un subconjunto de ellas. De esta forma, se reduce significativamente el riesgo de sobreajuste, es decir, de que un modelo arroje resultados aparentemente válidos solo porque, en realidad, el escenario de simulación fue diseñado a medida para ese modelo.
La importancia del ruido en un conjunto de datos
Por esta razón, los científicos de datos tienden cada vez más a apreciar los patrones de aprendizaje que introducen el ruido en los modelos de aprendizaje automático. El ruido, una especie de volatilidad impredecible que impide que se cristalicen los patrones que se repiten artificialmente, garantiza la resiliencia de los modelos de aprendizaje y les permite adaptarse con éxito a la variabilidad de las situaciones del mundo real.