Как генерируются рандомные числа в массиве?
Не понимаю как задать нижнюю границу 18 а верхнюю 40, помогите разобраться пожалуйста
int min = 18;
int range = 40;
int[] array = new int[25];
for (int i = 0; i < array.length; i++) {
array[i] = min + (int)(Math.random() * range);
System.out.println(array[i]);
Ответы (3 шт):
Автор решения: HaZcker
→ Ссылка
Наверное как-то так:
array[i] = min + (int)(Math.random() * ((range - min) + 1))
Ответ взят отсюда, и переделан под ваши нужды:
https://stackoverflow.com/questions/363681/how-do-i-generate-random-integers-within-a-specific-range-in-java
Автор решения: Сочиняй-Хан
→ Ссылка
Так еще можно. random.nextInt(22) накрафтит число от нуля до 22, и, чтоб попасть в нужный диапазон, надо прибавить 18. 0+18 = 18 - нижний предел, 22+18=40 - верхний предел.
Random random = new Random();
int digit = random.nextInt(22)+18;
Автор решения: Vyacheslav Mishchenko
→ Ссылка
Для генерации случайного целого в заданном диапазоне, вы можете использовать ThreadLocalRandom из пакета java.util.concurrent.ThreadLocalRandom;
Пример:
for (int x = 0; x < 10; ++x ) {
int min = 4; int max = 77;
int r = ThreadLocalRandom.current() .nextInt(min, max);
System.out.println("r = " + r);
}
Ссылка на документацию oracle