Saat ini saya sedang mengerjakan sebuah program yang seharusnya menghasilkan derau acak di layar berdasarkan 'koordinat' piksel. Koordinat harus memiliki warna yang sama setiap kali Anda me-restart program. Namun, menggunakan util Java. Secara acak, hasil yang saya dapatkan tidak acak seperti yang saya inginkan:
Saya berpikir bahwa jika saya menggunakan koordinat gabungan (seperti dalam satu bilangan bulat yang terbentuk dari kedua koordinat di sebelah satu sama lain) setiap koordinat akan memiliki angka yang berbeda. Dengan menggunakan angka itu sebagai seed, saya berharap mendapatkan angka acak yang berbeda untuk setiap koordinat yang digunakan untuk nilai rgb koordinat itu.
Ini adalah kode yang saya gunakan:
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;
}
}
Apakah pola yang dibuat oleh program karena cara fungsi acak java bekerja atau apakah saya melakukan sesuatu yang salah dan haruskah saya mencoba pendekatan yang berbeda?
Pembaruan: Saya sekarang mencoba untuk menyingkirkan masalah seputar rangkaian dengan menggunakan kode berikut:
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;
}
Entah bagaimana, ini juga memberikan gambar acak (menurut saya):
Namun kode ini menghasilkan ulang tiga kali per piksel. Meskipun ini bukan masalah bagi saya saat ini, saya mempertimbangkan untuk mengubah kode ini jika saya membutuhkan kinerja yang lebih baik nantinya.