«В этом кратком руководстве показано, как сгенерировать long first, используя простую Java и математическую библиотеку Apache Commons.

Эта статья является частью серии «Java — Back to Basic» здесь, на Baeldung.

1. Сгенерировать неограниченное длинное

Начнем с создания длинного:

@Test
public void givenUsingPlainJava_whenGeneratingRandomLongUnbounded_thenCorrect() {
    long generatedLong = new Random().nextLong();
}

2. Сгенерировать длинное в пределах диапазона

2.1. Случайное значение Long с помощью Plain Java

Далее — давайте рассмотрим создание случайного ограниченного значения Long, то есть значения Long в заданном диапазоне или интервале:

@Test
public void givenUsingPlainJava_whenGeneratingRandomLongBounded_thenCorrect() {
    long leftLimit = 1L;
    long rightLimit = 10L;
    long generatedLong = leftLimit + (long) (Math.random() * (rightLimit - leftLimit));
}

2.2. Случайное длинное число с помощью Apache Commons Math

Давайте рассмотрим создание случайного длинного числа с помощью более чистого API и Commons Math:

@Test
public void givenUsingApacheCommons_whenGeneratingRandomLongBounded_thenCorrect() {
    long leftLimit = 10L;
    long rightLimit = 100L;
    long generatedLong = new RandomDataGenerator().nextLong(leftLimit, rightLimit);
}

3. Генерация неограниченного целого числа

Давайте перейдем непосредственно к генерации случайного целого числа без ограничений:

@Test
public void givenUsingPlainJava_whenGeneratingRandomIntegerUnbounded_thenCorrect() {
    int generatedInteger = new Random().nextInt();
}

Как видите, это довольно близко к генерации длинного.

4. Создание целого числа в диапазоне

4.1. Случайное целое с простой Java

Далее – случайное целое в заданном диапазоне:

@Test
public void givenUsingPlainJava_whenGeneratingRandomIntegerBounded_thenCorrect() {
    int leftLimit = 1;
    int rightLimit = 10;
    int generatedInteger = leftLimit + (int) (new Random().nextFloat() * (rightLimit - leftLimit));
}

4.2. Случайное целое число с Commons Math

И то же самое с Common Math:

@Test
public void givenUsingApache_whenGeneratingRandomIntegerBounded_thenCorrect() {
    int leftLimit = 1;
    int rightLimit = 10;
    int generatedInteger = new RandomDataGenerator().nextInt(leftLimit, rightLimit);
}

5. Создание неограниченного числа с плавающей запятой

Теперь давайте перейдем к созданию случайных чисел с плавающей запятой — сначала неограниченное:

@Test
public void givenUsingPlainJava_whenGeneratingRandomFloatUnbouned_thenCorrect() {
    float generatedFloat = new Random().nextFloat();
}

6. Создание числа с плавающей запятой в пределах диапазона

6.1. Случайное число с плавающей запятой с помощью Plain Java

И ограниченное случайное число с плавающей запятой:

@Test
public void givenUsingPlainJava_whenGeneratingRandomFloatBouned_thenCorrect() {
    float leftLimit = 1F;
    float rightLimit = 10F;
    float generatedFloat = leftLimit + new Random().nextFloat() * (rightLimit - leftLimit);
}

6.2. Случайное число с плавающей запятой с помощью Commons Math

Теперь — ограниченное случайное число с плавающей точкой с Commons Math:

@Test
public void givenUsingApache_whenGeneratingRandomFloatBounded_thenCorrect() {
    float leftLimit = 1F;
    float rightLimit = 10F;
    float randomFloat = new RandomDataGenerator().getRandomGenerator().nextFloat();
    float generatedFloat = leftLimit + randomFloat * (rightLimit - leftLimit);
}

7. Генерация неограниченного двойного числа

7.1. Случайное неограниченное двойное число с помощью Plain Java

Наконец, мы собираемся генерировать случайные двойные значения – сначала с помощью Java Math API:

@Test
public void givenUsingPlainJava_whenGeneratingRandomDoubleUnbounded_thenCorrect() {
    double generatedDouble = Math.random();
}

7.2. Случайное неограниченное двойное значение с помощью Commons Math

А также случайное двойное значение с библиотекой Apache Commons Math:

@Test
public void givenUsingApache_whenGeneratingRandomDoubleUnbounded_thenCorrect() {
    double generatedDouble = new RandomDataGenerator().getRandomGenerator().nextDouble();
}

8. Создание двойного значения в пределах диапазона

8.1. Случайный ограниченный двойник с простой Java

В этом примере давайте рассмотрим случайное двойное число, сгенерированное в пределах интервала — с Java:

@Test
public void givenUsingPlainJava_whenGeneratingRandomDoubleBounded_thenCorrect() {
    double leftLimit = 1D;
    double rightLimit = 10D;
    double generatedDouble = leftLimit + new Random().nextDouble() * (rightLimit - leftLimit);
}

8.2. Random Bounded Double With Commons Math

И, наконец, — случайное удвоение в интервале с использованием библиотеки Apache Commons Math:

@Test
public void givenUsingApache_whenGeneratingRandomDoubleBounded_thenCorrect() {
    double leftLimit = 1D;
    double rightLimit = 100D;
    double generatedDouble = new RandomDataGenerator().nextUniform(leftLimit, rightLimit);
}

Вот и все — быстрые и точные примеры того, как для генерации как неограниченных, так и ограниченных значений для наиболее распространенных числовых примитивов в Java.

9. Заключение

В этом руководстве показано, как мы можем генерировать случайные числа, связанные или несвязанные, используя различные методы и библиотеки.

Как всегда, реализацию всех этих примеров и фрагментов можно найти в проекте GitHub. Это проект на основе Maven, поэтому его легко импортировать и запускать.