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