Зараз я працюю над програмою, яка повинна генерувати випадковий шум на екрані на основі "координат" пікселя. Координати повинні мати один і той же колір при кожному перезапуску програми. Однак, використовуючи util.Random Java, результати, які я отримую, не такі випадкові, як хотілося б:
Я думав, що якби я використовував комбіновані координати (як в одному цілому цілому, утвореному від обох координат поруч з іншим), кожна координата мала б інше число. Використовуючи це число в якості насіння, я розраховував отримати різні випадкові числа для кожної координати, щоб використовувати для значення 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;
}
}
Чи є модель, яку створює програма, завдяки тому, як працює функція Random 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;
}
Так чи інакше це дало (на мій погляд) достатньо випадковий образ:
Однак цей код перезавантажується три рази на піксель. Незважаючи на те, що зараз це не є проблемою для мене, я думаю, що я міняю цей код у випадку, якщо згодом мені буде потрібна краща підготовка.