私は現在、ピクセルの「座標」に基づいて画面上にランダムなノイズを生成するプログラムに取り組んでいます。プログラムを再起動するたびに、座標は同じ色になるはずです。ただし、Javaのutil.Randomを使用すると、私が望む結果は私が望むほどランダムではありません。
結合された座標を使用すると(互いに隣接する両方の座標から形成される1つの整数のように)、各座標は異なる数になると思いました。その番号をシードとして使用することにより、各座標に異なる乱数を取得して、その座標の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;
}
どういうわけか、これは(私の意見では)十分にランダムな画像も提供しました:
ただし、このコードはピクセルごとに3回再シードされます。現時点ではこれは問題ではありませんが、後でより良いパフォーマンスが必要になった場合に備えて、このコードを変更することを検討します。