Bug: ThreadLocalRandom
DOMANDA:
Perché se provo a generare numeri casuali in Java 7 con la classe ThreadLocalRandom ottengo sempre gli stessi numeri ad ogni esecuzione?
package numerirandomici;
import java.util.concurrent.ThreadLocalRandom;
public class RandomTest2 {
public static void main(String[] args) {
int random1 = ThreadLocalRandom.current().nextInt(1, 5); // da 1 (compreso) a 5 (escluso)
double random2 = ThreadLocalRandom.current().nextDouble(1, 5); // da 1,00 (compreso) a 5,00 (escluso)
System.out.println(random1);
System.out.println(random2);
}
}
import java.util.concurrent.ThreadLocalRandom;
public class RandomTest2 {
public static void main(String[] args) {
int random1 = ThreadLocalRandom.current().nextInt(1, 5); // da 1 (compreso) a 5 (escluso)
double random2 = ThreadLocalRandom.current().nextDouble(1, 5); // da 1,00 (compreso) a 5,00 (escluso)
System.out.println(random1);
System.out.println(random2);
}
}
RISPOSTA:
La classe ThreadLocalRandom, disponibile da Java 7 in poi, permette di generare i numeri casuali in maniera più efficiente rispetto al classico Math.random(). Il codice postato è corretto ma probabilmente hai installato la prima versione di Java 7.
Purtroppo nella prima versione di Java 7 c'era un bug, risolto con l'update 2 sia del JRE che del JDK. Quindi basta scaricare ed aggiornare il Java Runtime Environment o il Java Development Kit ad una versione successiva alla prima per risolvere il problema.
Commenti
Posta un commento