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);
   }
}


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

Post popolari in questo blog

Arrotondamento e troncamento in Java

Eclipse: Shortcuts (scorciatoie) da tastiera

Strutture dati: List, Set, Map

Creare un eseguibile Java