Genere valores dobles aleatorios entre 0 y 1 en Java

Rupam Yadav 12 octubre 2023
  1. Genere valores dobles aleatorios entre 0 y 1 usando Math.random() en Java
  2. Genere valores dobles aleatorios entre 0 y 1 usando Random().nextDouble() en Java
  3. Genere valores dobles aleatorios entre 0 y 1 usando ThreadLocalRandom.current().nextDouble() en Java
Genere valores dobles aleatorios entre 0 y 1 en Java

Este artículo presentará tres métodos para generar valores aleatorios entre 0 y 1 de tipo primitivo double. Para probar la aleatoriedad de los valores generados, usaremos un bucle para generar diez valores aleatorios de tipo doble entre 0 y 1.

Genere valores dobles aleatorios entre 0 y 1 usando Math.random() en Java

La clase Math se puede utilizar para realizar varias operaciones matemáticas. También podemos usar esta clase para generar números aleatorios. Math.random() es la función estática que devuelve números aleatorios entre 0 y 1. Aquí, 0 incluye los valores generados, mientras que 1 es siempre exclusivo.

En el siguiente ejemplo, usamos Math.random() para generar valores aleatorios de tipo double. En la salida, podemos ver que los valores son todos aleatorios.

public class RandomDouble {
  public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
      double randomDbl = Math.random();

      System.out.println(randomDbl);
    }
  }
}

Producción :

0.9537872648347154
0.2863804438195172
0.5815339629441948
0.7734677312115609
0.021051510563543485
0.9064133490694901
0.6833468691871607
0.30655711217738246
0.2730784326888416
0.6804778782692341

Genere valores dobles aleatorios entre 0 y 1 usando Random().nextDouble() en Java

Otro método que puede generar números aleatorios entre 0 y 1 es nextDouble(), una parte de la clase java.util.Random. Cuando llamamos a nextDouble() con el objeto de la clase Random, devuelve un valor aleatorio entre 0 y 1, tal como vimos en el ejemplo anterior.

Se dice que este método es más eficiente que Math.random().

import java.util.Random;

public class RandomDouble {
  public static void main(String[] args) {
    Random randomObj = new Random();

    for (int i = 0; i < 10; i++) {
      double randomDbl = randomObj.nextDouble();

      System.out.println(randomDbl);
    }
  }
}

Producción :

0.240017494934622
0.08331956619499614
0.4359524465181911
0.5291811081068774
0.38193057731688373
0.6969527822622924
0.5436002348156281
0.32176862575520415
0.07327708002828293
0.9005635171231344

Genere valores dobles aleatorios entre 0 y 1 usando ThreadLocalRandom.current().nextDouble() en Java

Las dos técnicas que vimos en este tutorial no son eficientes para sistemas de subprocesos múltiples y pueden resultar en un rendimiento deficiente. Sucede porque cuando generamos números aleatorios usando la clase Random todos los hilos comparten la misma instancia, lo que significa que cuando ocurre un cambio en un hilo, todos los demás hilos también se ejecutan.

Para resolver este problema, Java introdujo ThreadLocalRandom en la actualización de JDK 7. Es una clase que se ejecuta solo en el subproceso actual, lo que da como resultado un mejor rendimiento en un entorno con varios subprocesos.

En el siguiente ejemplo, llamamos al nextDouble() que genera valores aleatorios dobles con ThreadLocalRandom.current(), y devuelve un valor doble aleatorio entre 0 y 1.

import java.util.concurrent.ThreadLocalRandom;

public class RandomDouble {
  public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
      double randomDbl = ThreadLocalRandom.current().nextDouble();

      System.out.println(randomDbl);
    }
  }
}

Producción :

0.9717084711770174
0.8977374014983726
0.2744375247405819
0.2866498720386894
0.6118970047667582
0.7441044456568308
0.21043457873690274
0.08985457420563114
0.86748682220748
0.18952106607144148
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artículo relacionado - Java Random