Чтобы сгенерировать случайное число, попадающее в несколько диапазонов, сначала необходимо рассчитать общее количество значений в целевом наборе данных, затем сгенерировать случайное число для этой суммы и присвоить его соответствующему набору.
Пример кода для генерации 20 случайных чисел в диапазонах 0x20 - 0x7E и 0xA0 - 0xFF включительно:
int low1 = 0x20, high1 = 0x7E, low2 = 0xA0, high2 = 0xFF;
int count1 = high1 - low1 + 1;
int count2 = high2 - low2 + 1;
long seed = 1776;
Random rnd = new Random(seed);
for (int i = 0; i < 20; i++) {
int n = rnd.nextInt(count1 + count2);
if (n < count1) { // random number is for range 1
n = n + low1; // offset into range 1
} else { // random number is for range 2
n = n - count1 + low2; // offset into range 2
}
System.out.printf("%02X ", n);
}
Пример вывода
6B 6B A5 DA B3 F7 2B C6 AB F2 3F EE F9 A5 28 31 AD D3 66 B0