createSeededRandom
Un generador aleatorio determinista con semilla: el motor detrás de los barajados reproducibles.
Lección
createSeededRandom(seed) devuelve una función sin argumentos
que produce doubles pseudoaleatorios en [0, 1). La secuencia
queda completamente determinada por la semilla: dos generadores creados a
partir de la misma semilla dan exactamente los mismos números, en el mismo
orden, en cualquier plataforma.
Es un port del seededRandom interno de FxTS (un PRNG al
estilo Mulberry32). En FxTS es privado, pero FxDart lo expone porque la
aleatoriedad determinista resulta útil en muchos sitios: tests
reproducibles, datos de demo estables, fuzzing basado en propiedades con
fallos que se pueden reproducir, o cualquier caso donde lo que de verdad
quieres es «aleatorio, pero igual en cada ejecución». Es lo que usa
shuffle por debajo cuando le pasas
una semilla.
A diferencia del Random(seed) de dart:math, la
secuencia forma parte del contrato de la librería con FxTS: un
shuffle con semilla en FxDart y en FxTS produce el mismo
orden para la misma semilla.
Demo 1 · Misma semilla, misma secuencia
Demo 2 · Selecciones y barajados reproducibles
Convierte el generador en la forma aleatoria que necesites; aquí, tiradas
de dados y un shuffle con semilla:
Pruébalo tú
Ejercicio: reparte dos manos «aleatorias» idénticas construyendo ambas a partir de la misma semilla.