En el desarrollo de videojuegos con generación procedural, es habitual usar varios generadores de números aleatorios (RNG), uno por sistema, para mantener la determinismo a partir de una semilla compartida. El artículo analiza el problema del "RNG correlacionado": cuando todos los RNG se inicializan con la misma semilla, producen secuencias idénticas en el mismo orden, lo que permite a los jugadores deducir resultados de un sistema a partir de otro. Como ejemplo, menciona la meteorología de Final Fantasy XIV, donde el estado climático de una zona condiciona el de otras, y los efectos descubiertos en Slay the Spire, donde observar una tirada de cartas permite predecir las siguientes.
El texto plantea tres soluciones. La primera, aplicar un desplazamiento inicial distinto a cada RNG, es solo un parche: las secuencias siguen correlacionadas y los offsets deben ser lo bastante grandes para no solaparse. La segunda, usar un RNG maestro que genere semillas para los demás, funciona, pero acopla el estado de cada generador al orden de creación: eliminar uno altera todos los posteriores. La tercera, basada en hash, consiste en combinar la semilla global con un identificador único de cada sistema mediante una función hash determinista, lo que garantiza secuencias independientes y permite incluso acoplar RNG a voluntad cuando interese.
El autor recomienda evitar System.HashCode de C# por sus peculiaridades de implementación y propone algoritmos como Squirrel3 o xoshiro256** como alternativas rápidas, serializables y con buena distribución. También señala que MegaCrit usa un método similar en Slay the Spire 2, aunque tropezó con un detalle de System.Random que producía semillas linealmente correlacionadas.
