«В этом кратком руководстве показано, как сгенерировать 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, поэтому его легко импортировать и запускать.