현재 픽셀의 '좌표'를 기반으로 화면에서 무작위 노이즈를 생성 해야하는 프로그램을 개발 중입니다. 프로그램을 다시 시작할 때마다 좌표의 색상이 동일해야합니다. 그러나 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의 임의 함수가 작동하는 방식으로 인해 프로그램이 작성하는 패턴입니까, 아니면 내가 잘못하고 다른 접근법을 시도해야합니까?
업데이트 : 이제 다음 코드를 사용하여 연결과 관련된 문제를 해결하려고했습니다.
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;
}
어떻게 든 이것은 (내 의견으로는) 충분히 임의의 이미지를 제공했습니다.
그러나이 코드는 픽셀 당 세 번 시드되었습니다. 지금은 이것이 문제가되지 않지만 나중에 더 나은 성능이 필요한 경우를 대비하여이 코드를 변경하는 것이 좋습니다.