Java - Случайни дълги, плаващи, цели и двойни

Този бърз урок ще илюстрира как да се генерира дълъг първи с помощта на обикновена Java и с помощта на библиотеката Apache Commons Math.

Тази статия е част от поредицата „Java - Back to Basic“ тук на Baeldung.

1. Генериране на неограничен лонг

Нека започнем с генериране на Long:

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

2. Генериране на Long в диапазон

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 Math

Нека да разгледаме генерирането на случайния 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(); }

Както можете да видите, това е доста близо до генериране на дълго.

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. Случайно цяло число с обща математика

И същото с 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. Случайно поплавък с обикновена 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:

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

Както и произволна двойна стойност с библиотеката на Apache Commons Math:

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

8. Генериране на Double в диапазон

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

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