Şu anda bir pikselin 'koordinatlarına' dayalı bir ekranda rastgele gürültü üretmesi gereken bir program üzerinde çalışıyorum. Programı her yeniden başlattığınızda koordinatlar aynı renge sahip olmalıdır. Ancak, Java'nın util.Random kullanarak, elde ettiğim sonuçlar istediğim kadar rastgele değildir:
Eğer kombine koordinatları kullanırsam (birbirinin yanındaki her iki koordinattan oluşan bir tamsayıda olduğu gibi) her koordinatın farklı bir sayıya sahip olacağını düşündüm. Bu sayıyı bir tohum olarak kullanarak, bu koordinatın rgb değeri için kullanılacak her bir koordinat için farklı rastgele sayılar elde etmeyi bekledim.
Bu kullandığım kod:
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;
}
}
Java'nın Rastgele işlevinin çalışması nedeniyle programın oluşturduğu desen mi yoksa yanlış bir şey mi yapıyorum ve farklı bir yaklaşım denemeliyim?
Güncelleme: Şimdi aşağıdaki kodu kullanarak bitiştirmeyi çevreleyen sorunlardan kurtulmaya çalıştım:
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;
}
Her nasılsa, bu da (bence) yeterince rastgele bir görüntü sağladı:
Ancak bu kod piksel başına üç kez yeniden boyutlandırılır. Bu benim için bir sorun olmasa da, daha sonra daha iyi performansa ihtiyacım olması durumunda bu kodu değiştirmeyi düşünürüm.