Actualmente estoy trabajando en un programa que debería generar ruido aleatorio en una pantalla basada en las 'coordenadas' de un píxel. Las coordenadas deben tener el mismo color cada vez que reinicie el programa. Sin embargo, usando el util.Random de Java, los resultados que obtengo no son tan aleatorios como me gustaría:
Pensé que si usaba las coordenadas combinadas (como en un entero formado a partir de ambas coordenadas una al lado de la otra) cada coordenada tendría un número diferente. Al usar ese número como semilla, esperaba obtener un número aleatorio diferente para cada coordenada que se usaría para el valor rgb de esa coordenada.
Este es el código que usé:
public class Generate {
static Random Random;
public static int TileColor(int x, int y){
Random = new Random(Integer.valueOf(Integer.toString(x)+Integer.toString(y)));
int b = 1 + Random.nextInt(50);
int g = 1 + Random.nextInt(50);
int r = 1 + Random.nextInt(50);
int color = -Color.rgb888(r, g, b);
return color;
}
}
¿El patrón que crea el programa se debe a la forma en que funciona la función Aleatoria de Java o estoy haciendo algo mal? ¿Debería intentar un enfoque diferente?
Actualización: ahora intenté deshacerme de los problemas relacionados con la concatenación utilizando el siguiente código:
public static int TileColor(int x, int y){
Randomy = new Random(y);
Randomx = new Random(x);
Random = new Random(Integer.valueOf(Integer.toString(Randomx.nextInt(1234))+Integer.toString(Randomy.nextInt(1234))));
int b = 1 + Random.nextInt(100);
int g = 1 + Random.nextInt(100);
int r = 1 + Random.nextInt(100);
int color = -Color.rgb888(r, g, b);
return color;
}
De alguna manera, esto también proporcionó (en mi opinión) una imagen suficientemente aleatoria:
Sin embargo, este código se reinicia tres veces por píxel. Aunque esto no es un problema para mí en este momento, considero cambiar este código en caso de que necesite una mejor actuación más adelante.