Я пытаюсь найти способ получить случайное значение из предоставленного списка различных диапазонов, используя ThreadLocalRandom
, и вернуть это одно случайное значение из метода.Я пробовал разные подходы, и мне не повезло.
Я пробовал это:
private static final Long[][] values = {
{ 233L, 333L },
{ 377L, 477L },
{ 610L, 710L }
};
// This isn't correct
long randomValue = ThreadLocalRandom.current().nextLong(values[0][0]);
Но я не мог понять, как извлечь из него случайное значение для определенного диапазона, поэтому подумал, что я попробую Map
Подход, я пытался создать карту целых чисел и список длин:
private static Map<Integer, List<Long>> mapValues = new HashMap<>();
{{233L, 333L}, {377L, 477L}, {610L, 710L}} // ranges I want
Я не уверен, как сохранить эти диапазоны значений в карте.
Я пытался добавить взначения, например:
// Need to get the other value for the range in here, in this case 333L
map.put(1, 233L);
Я не уверен, как добавить 333L в список, я искал и пробовал разные вещи, но всегда получаю ошибки, такие как: найдено 'long', обязательный список
Я хочу, чтобы целое число в карте было идентификатором для соответствующего диапазона, например, 1 для 233L-333L, чтобы я мог сначала сказать это, получить случайный ключ Int из карты, например 1, а затем используйте ThreadLocalRandom.current().nextLong(origin, bound)
, где источник будет 233L, а предел будет 333L, а затем вернет случайное значение в пределах этого диапазона 233L-333L.
Я не уверен, возможно ли это, или япросто неправильный подход - любое руководство / помощь приветствуются!