我目前正在开发一个程序,该程序应基于像素的“坐标”在屏幕上生成随机噪声。每次重新启动程序时,坐标应具有相同的颜色。但是,使用Java的util.Random,我得到的结果并不像我想要的那样随机:
我以为如果使用组合坐标(例如,由两个坐标彼此相邻形成的整数),则每个坐标将具有不同的数字。通过使用该数字作为种子,我希望为每个坐标获得一个不同的随机数,以用于该坐标的rgb值。
这是我使用的代码:
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的Random函数的工作方式还是我做错了,应该尝试其他方法吗?
更新: 现在,我尝试通过使用以下代码来摆脱有关串联的问题:
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;
}
以某种方式,这也提供了(我认为)足够随机的图像:
但是,此代码每个像素确实重新设置了3次。即使这对我来说现在不是问题,但我确实考虑更改此代码,以防以后需要更好的性能。