Genera valori doppi casuali tra 0 e 1 in Java
-
Genera valori doppi casuali tra 0 e 1 utilizzando
Math.random()
in Java -
Genera valori doppi casuali tra 0 e 1 utilizzando
Random().nextDouble()
in Java -
Genera valori doppi casuali tra 0 e 1 utilizzando
ThreadLocalRandom.current().nextDouble()
in Java
Questo articolo introdurrà tre metodi per generare valori casuali tra 0 e 1 di tipo primitivo double
. Per dimostrare la casualità dei valori generati, utilizzeremo un bucle per generare dieci valori casuali di doppio tipo tra 0 e 1.
Genera valori doppi casuali tra 0 e 1 utilizzando Math.random()
in Java
La classe Math
può essere utilizzata per eseguire varie operazioni matematiche. Possiamo usare questa classe anche per generare numeri casuali. Math.random()
è la funzione statica che restituisce numeri casuali compresi tra 0 e 1. Qui, 0 è comprensivo dei valori generati, mentre 1 è sempre esclusivo.
Nell’esempio seguente, usiamo Math.random()
per generare valori casuali di tipo double
. Nell’output, possiamo vedere che i valori sono tutti casuali.
public class RandomDouble {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
double randomDbl = Math.random();
System.out.println(randomDbl);
}
}
}
Produzione:
0.9537872648347154
0.2863804438195172
0.5815339629441948
0.7734677312115609
0.021051510563543485
0.9064133490694901
0.6833468691871607
0.30655711217738246
0.2730784326888416
0.6804778782692341
Genera valori doppi casuali tra 0 e 1 utilizzando Random().nextDouble()
in Java
Un altro metodo che può generare numeri casuali tra 0 e 1 è nextDouble()
, una parte della classe java.util.Random
. Quando chiamiamo nextDouble()
con l’oggetto della classe Random
, restituisce un valore casuale compreso tra 0 e 1, proprio come abbiamo visto nell’esempio precedente.
Si dice che questo metodo sia più efficiente di 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);
}
}
}
Produzione:
0.240017494934622
0.08331956619499614
0.4359524465181911
0.5291811081068774
0.38193057731688373
0.6969527822622924
0.5436002348156281
0.32176862575520415
0.07327708002828293
0.9005635171231344
Genera valori doppi casuali tra 0 e 1 utilizzando ThreadLocalRandom.current().nextDouble()
in Java
Le due tecniche che abbiamo visto in questo tutorial non sono efficienti per i sistemi multi-thread e possono causare prestazioni scadenti. Succede perché quando generiamo numeri casuali utilizzando la classe Random
tutti i thread condividono la stessa istanza, il che significa che quando si verifica una modifica su un thread, vengono eseguiti anche tutti gli altri thread.
Per risolvere questo problema, Java ha introdotto ThreadLocalRandom
nell’aggiornamento JDK 7. È una classe che viene eseguita solo sul thread corrente, ottenendo prestazioni migliori in un ambiente con più thread.
Nell’esempio seguente, chiamiamo nextDouble()
che genera doppi valori casuali con ThreadLocalRandom.current()
, e restituisce un valore double random tra 0 e 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);
}
}
}
Produzione:
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