Java: aleatorio largo, flotante, entero y doble

Este tutorial rápido ilustrará cómo generar un primero largo usando Java simple y usando la biblioteca Apache Commons Math.

Este artículo es parte de la serie "Java - Back to Basic" aquí en Baeldung.

1. Genere un largo ilimitado

Comencemos generando un Long:

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

2. Genere un largo dentro de un rango

2.1. Largo aleatorio con Java simple

A continuación, veamos cómo crear un Long limitado aleatorio, es decir, un valor Long dentro de un rango o intervalo dado:

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

2.2. Random Long con Apache Commons Math

Echemos un vistazo a la generación de Long aleatorio con una API más limpia y Commons Math:

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

3. Genere un número entero ilimitado

Pasemos a la generación de un entero aleatorio sin límites:

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

Como puede ver, está bastante cerca de generar un long.

4. Genere un número entero dentro de un rango

4.1. Entero aleatorio con Java simple

Siguiente: un número entero aleatorio dentro de un rango determinado:

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

4.2. Entero aleatorio con matemáticas comunes

Y lo mismo con Common Math:

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

5. Genere un flotador ilimitado

Ahora, repasemos la generación de flotadores aleatorios, primero sin límites:

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

6. Genere un flotador dentro de un rango

6.1. Flotación aleatoria con Java simple

Y un flotador aleatorio acotado:

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

6.2. Flotación aleatoria con matemáticas comunes

Ahora, un flotante aleatorio acotado con 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. Genera un doble ilimitado

7.1. Doble aleatorio ilimitado con Java simple

Finalmente, vamos a generar valores dobles aleatorios, primero, con la API de Java Math:

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

7.2. Doble aleatorio ilimitado con matemáticas comunes

Además de un valor doble aleatorio con la biblioteca Apache Commons Math:

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

8. Genere un doble dentro de un rango

8.1. Doble delimitado aleatorio con Java simple

En este ejemplo, echemos un vistazo a un doble aleatorio generado dentro de un intervalo, con Java:

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

8.2. Doble delimitado aleatorio con matemáticas comunes

Y, por último, un doble aleatorio dentro de un intervalo, utilizando la biblioteca Apache Commons Math:

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

Y ahí lo tiene: ejemplos rápidos y concretos de cómo generar valores ilimitados y limitados para las primitivas numéricas más comunes en Java.

9. Conclusión

Este tutorial ilustró cómo podríamos generar números aleatorios, ya sea vinculados o no, utilizando diferentes técnicas y bibliotecas.

Como siempre, la implementación de todos estos ejemplos y fragmentos se puede encontrar en el proyecto GitHub. Este es un proyecto basado en Maven, por lo que debería ser fácil de importar y ejecutar.