Al hacer un generador de mapas en Java encontré un problema bastante desconcertante con su generador de números aleatorios, para especificar, cuando dos RNG tienen semillas muy similares (que difieren en enteros pequeños) ¡su primer valor de salida será muy similar!Java Aleatorio, un pequeño cambio en la semilla causa un pequeño cambio en la salida
código Ejemplo:
Random r = new Random();
long n = 100000; //Choose any number
r.setSeed(n);
System.out.println(r.nextInt());
r.setSeed(n+1);
System.out.println(r.nextInt());
Esta casi se rompió mi fe en el original de Java generador de números aleatorios, ya que utilizar coordenadas para sembrar un generador de mapas. ¿Podría alguien sugerir una redefinición para el método Random.next(int bits)
o alguna otra solución para este problema?
¡Gracias por tu ayuda!
¿Por qué llamas a 'nextInt()' en 'r3'? ¿De dónde viene ese RNG? ¿Está relacionado de alguna manera con 'r'? –
.. y ¿por qué cambiar la semilla después de cada valor? si r3 solo es un error tipográfico – Kaj
@Kaj, para ilustrar que las salidas son similares. – aioobe