Создание случайного числа между 1 и 10 Java

Я хочу создать число от 1 до 10 в Java.

Вот что я пробовал:

Random rn = new Random();
int answer = rn.nextInt(10) + 1;

Есть ли способ сказать, что помещать в круглую скобку () при вызове метода nextInt и что добавить?

Ответ 1

Как в документации, этот вызов метода возвращает "псевдослучайное равномерно распределенное значение int между 0 (включительно) и указанным значением (эксклюзивный )". Это означает, что вы получите номера от 0 до 9 в вашем случае. Итак, вы сделали все правильно, добавив один к этому номеру.

Вообще говоря, если вам нужно сгенерировать числа от min до max (включая оба), вы пишете

random.nextInt(max - min + 1) + min

Ответ 2

Стандартный способ сделать это:

/**
 * Returns a psuedo-random number between min and max, inclusive.
 * The difference between min and max can be at most
 * <code>Integer.MAX_VALUE - 1</code>.
 *
 * @param min Minimim value
 * @param max Maximim value.  Must be greater than min.
 * @return Integer between min and max, inclusive.
 * @see java.util.Random#nextInt(int)
 */
public static int randInt(int min, int max) {

    // Usually this can be a field rather than a method variable
    Random rand = new Random();

    // nextInt is normally exclusive of the top value,
    // so add 1 to make it inclusive
    int randomNum = rand.nextInt((max - min) + 1) + min;

    return randomNum;
}

См. соответствующий JavaDoc.

Как объясняет Аурунд, случайные объекты, созданные за короткое время друг от друга, будут иметь тенденцию производить аналогичный вывод, поэтому было бы неплохо сохранить созданный случайный объект как поле, а не в методе, как у меня сделано (только для пояснения).

Источник: fooobar.com/questions/277/...

Ответ 3

Это будет работать для генерации числа 1 - 10. Убедитесь, что вы импортируете Random в верхней части вашего кода.

import java.util.Random;

Если вы хотите проверить это, попробуйте что-то вроде этого.

Random rn = new Random();

for(int i =0; i < 100; i++)
{
    int answer = rn.nextInt(10) + 1;
    System.out.println(answer);
}

Также, если вы измените число в скобках, оно создаст случайное число от 0 до этого числа -1 (если вы не добавите один из них, как у вас, тогда он будет от 1 до введенного вами числа).