repetir positivos numeros numero negativos metodo generar clase cifras arreglo aleatorios aleatorio java function random 2d procedural

java - positivos - Función aleatoria paramétrica para la generación de ruido 2D



metodo random java (1)

Intento generar infinito terreno aleatorio. El terreno debe generar lo mismo cada vez que se le dé la misma semilla.

He intentado usar la función Aleatoria de Java, creando la semilla usando varias funciones de las coordenadas xey del nodo dado en la cuadrícula del terreno. Tales como x * y + x + y + semilla, 20 * x + 30 * y etc.

El problema con este enfoque es que siempre veo patrones claros en los números generados.

Entonces, básicamente, lo que quiero es: f (x, y) = Número aleatorio

Sería útil si la función anterior pudiera incluir una semilla de algún tipo, por lo que es: f (x, y, seed) = Número aleatorio

Necesitaré generar varios números para cada combinación x, y, pero debería ser bastante fácil obtener números adicionales una vez que tenga la función anterior. Estos servirán para determinar la altura del terreno y qué características (edificios, árboles) estarán presentes.

Por favor, no menciona el Perlin Noise u otros métodos similares. Mi problema no es hacer que el ruido se vea bien, es obtener ruido confiablemente "aleatorio".

Gracias, Jamie.


Usted está buscando la función hash. Prueba uno de esos:

http://www.concentric.net/~ttwang/tech/inthash.htm

Aquí hay un ejemplo de uso:

int hash32shift(int key) { key = ~key + (key << 15); // key = (key << 15) - key - 1; key = key ^ (key >>> 12); key = key + (key << 2); key = key ^ (key >>> 4); key = key * 2057; // key = (key + (key << 3)) + (key << 11); key = key ^ (key >>> 16); return key; } int noise(int x, int y, int seed) { return hash32shift(seed+hash32shift(x+hash32shift(y))); }

Y, se ve así: