Подтвердить что ты не робот

Как создать случайное целое число от min до max в java?

Какой метод возвращает случайный int между min и max? Или такой метод не существует?

Я ищу что-то вроде этого:

NAMEOFMETHOD (min, max) 

(где min и max int s)

который возвращает soemthing следующим образом:

8

(случайным образом)

Если такой метод существует, можете ли вы сослаться на соответствующую документацию с ответом. Благодарю.

Обновление: попытка реализовать полное решение в следующем ответе у меня есть:

class TestR
{
    public static void main (String[]arg) 
    {   
        Random random = new Random() ;
        int randomNumber = random.nextInt(5) + 2;
        System.out.println (randomNumber) ; 
    } 
} 

Я по-прежнему получаю те же ошибки от complier:

TestR.java:5: cannot find symbol
symbol  : class Random
location: class TestR
        Random random = new Random() ;
        ^
TestR.java:5: cannot find symbol
symbol  : class Random
location: class TestR
        Random random = new Random() ;
                            ^
TestR.java:6: operator + cannot be applied to Random.nextInt,int
        int randomNumber = random.nextInt(5) + 2;
                                         ^
TestR.java:6: incompatible types
found   : <nulltype>
required: int
        int randomNumber = random.nextInt(5) + 2;
                                             ^
4 errors

Что здесь происходит?

4b9b3361

Ответ 1

Построить случайный объект при запуске приложения:

Random random = new Random();

Затем используйте Random.nextInt(int):

int randomNumber = random.nextInt(max + 1 - min) + min;

Обратите внимание, что нижний и верхний пределы включены.

Ответ 2

Вы можете использовать Random.nextInt(n). Это возвращает случайный int в [0, n). Просто используя max-min + 1 вместо n и добавив min в ответ, вы получите значение в нужном диапазоне.

Ответ 3

public static int random_int(int Min, int Max)
{
     return (int) (Math.random()*(Max-Min))+Min;
}

random_int(5, 9); // For example

Ответ 4

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

public static int getRandom(int min, int max) {
    if (min > max) {
        throw new IllegalArgumentException("Min " + min + " greater than max " + max);
    }      
    return (int) ( (long) min + Math.random() * ((long)max - min + 1));
}

это работает, даже если вы называете это с:

getRandom(Integer.MIN_VALUE, Integer.MAX_VALUE) 

Ответ 5

Использование класса Random - это способ, предложенный в принятом ответе, но здесь это менее правильный путь, если вы не хотите создавать новый случайный объект:

min + (int) (Math.random() * (max - min + 1));

Ответ 6

С Java 7 или выше вы можете использовать

ThreadLocalRandom.current().nextInt(int origin, int bound)

Javadoc: ThreadLocalRandom.nextInt

Ответ 7

Это генерирует случайное целое число размером psize

public static Integer getRandom(Integer pSize) {

    if(pSize<=0) {
        return null;
    }
    Double min_d = Math.pow(10, pSize.doubleValue()-1D);
    Double max_d = (Math.pow(10, (pSize).doubleValue()))-1D;
    int min = min_d.intValue();
    int max = max_d.intValue();
    return RAND.nextInt(max-min) + min;
}

Ответ 8

import java.util.Random;