Перейти к основному содержимому

Java — случайные длинные, числа с плавающей запятой, целые и двойные

· 4 мин. чтения

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

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

1. Создайте неограниченное длинное

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

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

2. Сгенерируйте длинное значение в диапазоне

2.1. Случайный длинный с простой 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

Давайте посмотрим на генерацию случайного Long с более чистым 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();
}

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

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

И то же самое с общей математикой:

@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. Случайное число с плавающей запятой с простой Java

И ограниченный случайный поплавок:

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

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

Теперь — ограниченное случайное число с плавающей запятой с 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. Случайный неограниченный двойной с простой Java

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

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

7.2. Случайный неограниченный двойной с математикой Commons

А также случайное двойное значение с библиотекой 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. Случайный ограниченный двойной с математикой Commons

И, наконец, случайный дубль внутри интервала с использованием библиотеки 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, поэтому его легко импортировать и запускать.