Genere valores dobles aleatorios entre 0 y 1 en Java
-
Genere valores dobles aleatorios entre 0 y 1 usando
Math.random()
en Java -
Genere valores dobles aleatorios entre 0 y 1 usando
Random().nextDouble()
en Java -
Genere valores dobles aleatorios entre 0 y 1 usando
ThreadLocalRandom.current().nextDouble()
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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn