Я хочу генерировать случайные числа в заданном диапазоне в Java - PullRequest
0 голосов
/ 07 сентября 2018

Для этого у меня есть решение, но я не могу его понять: Я использовал функцию ниже для генерации случайных чисел в заданном диапазоне, но что означает функция ниже?

static int randomRangeInNumber(int min, int max) {
    Random r=new Random();
    return r.nextInt((max-min)+1)+min;
}

Что я вернул, я не получил Пожалуйста, помогите мне понять его значение любая помощь будет оценена

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

nextInt обычно исключает верхнее значение, поэтому добавьте 1, чтобы включить его

Итак, в вашем случае мы скажем, что max равно 10 и min равно 5.

nextInt(n) даст вам случайное число от 0 до n - 1.

Так что добавление +1 позволит вам включить значение n.

nextInt(max-min), следовательно, дает вам случайное число между (в данном случае) 0 и 5 - 1 (и включает 5 из-за +1)

Затем добавляя min снова,означает, что это даст вам указанное выше случайное число, но прибавьте к нему 5, так что результатом будет случайное число от 5 до 10.

0 голосов
/ 07 сентября 2018

Документация для nextInt (int bound) говорит

Возвращает псевдослучайное, равномерно распределенное значение типа int между 0 (включительно) и указанным значением (исключая), извлеченное из последовательности этого генератора случайных чисел.

Итак, ваш nextInt звонок

  1. принимает возвращаемое значение, которое находится в диапазоне [0..bound] (где граница равна (max-min)+1), а затем
  2. масштабирование его в диапазон [min..max] с помощью +min.
return r.nextInt((max-min)+1)+min;
       \__________1_________/\_2_/
...