Attualmente sto lavorando a un programma che dovrebbe generare rumore casuale su uno schermo basato sulle "coordinate" di un pixel. Le coordinate dovrebbero avere lo stesso colore ogni volta che riavvii il programma. Tuttavia, usando util.Random di Java, i risultati che ottengo non sono così casuali come vorrei:
Pensavo che se avessi usato le coordinate combinate (come in un numero intero formato da entrambe le coordinate accanto a ciascuna) ogni coordinata avrebbe un numero diverso. Usando quel numero come seme mi aspettavo di ottenere un numero casuale diverso per ciascuna coordinata da utilizzare per il valore rgb di quella coordinata.
Questo è il codice che ho usato:
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;
}
}
Lo schema creato dal programma a causa del modo in cui la funzione Casuale di Java funziona o sto facendo qualcosa di sbagliato e dovrei provare un approccio diverso?
Aggiornamento: ora ho provato a eliminare i problemi relativi alla concatenazione utilizzando il seguente codice:
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;
}
In qualche modo, questo ha anche fornito un'immagine (a mio avviso) sufficientemente casuale:
Questo codice viene comunque ridimensionato tre volte per pixel. Anche se questo non è un problema per me in questo momento, prendo in considerazione la possibilità di modificare questo codice nel caso in cui avessi bisogno di preformance in seguito.