back to top

Numeri random con Java

In un programma è spesso necessario eseguire operazioni sui numeri; una di queste potrebbe essere la generazione di un numero casuale (o random nuber). In Java è possibile ottenere un numero casuale seguendo "due strade" differenti.

Utilizzare Math.random()

La prima consiste nell’utilizzo della classe Math e del suo metodo random() il quale restituisce un valore numerico casuale compreso tra 0.1 e 1.0. Quello che ci verrà restituito da Math.random(), quindi, è un numero decimale (o più correttamente un double) compreso nell’intervallo indicato. La sintassi è semplicissima:

[tipo] [nome_variabile] = Math.random();

Vediamo un esempio:

double casuale = Math.random();

A fronte di questa operazione è anche possibile ottenere un numero intero, per farlo non dovremo far altro che effettuare una semplice moltiplicazione:

double casuale = (int)(Math.random()*10);

Questo codice restiturà, quindi, un numero casuale compreso tra 1 e 10.

Utilizzare la classe java.util.Random

Fino ad ora abbiamo visto come generare un numero (pseudo)casuale utilizzando Math.random() il quale non fa altro che utilizzare un’istanza della classe Random del package java.util invocando il metodo nextDouble(). Possiamo quindi dire di aver utilizzato sino ad ora una "scorciatoia"; tuttavia, se si desidera avere risultati più elaborati, possiamo far ricorso direttamente alla classe Random nei modi che vedremo di seguito.

Per prima cosa dobbiamo, ovviamente, istanziare la classe:

Random random = new Random();

Generare un valore booleano

Per ottenere un valore booleano randomico utiliziamo:

boolean miavar = random.nextBoolean();

Generare un valore intero

Per ottenere un numero casuale intero possiamo utilizzare il metodo nextInt() in questo modo:

int miavar = random.nextInt();

Possiamo anche richiedere che il valore sia compreso tra 0 ed un numero arbitrario (intero). Per fare ciò è sufficiente passare il numero limite come argomento del metodo nextInt():

int miavar = random.nextInt(100);

Se desideriamo che il numero casuale sia compreso tra due valori arbitrari possiamo utilizzare un codice di questo genere:

int a = 80; // numero minimo
int b = 500; // numero massimo
int c = ((b-a) + 1);
int miavar = random.nextInt(c) + a;

Possiamo tradurre questo codice anche in una classe:

public static int randInt(int min, int max) {
  Random rand = new Random();
  int randomNum = rand.nextInt((max - min) + 1) + min;
  return randomNum;
}

Generare un valore double e float

Se vogliamo generare un valore double randomico possiamo utilizzare, come già visto, Math.random() oppure:

double miavar = random.nextDouble();

Se, per finire, vogliamo creare un valore randomico di tipo float (compreso tra 0.1 e 1.0) possiamo utilizzare:

float miavar = random.nextFloat();
Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).

Leggi anche...

Java: cos’è e a cosa serve l’operatore modulo (%)

In Java, l'operatore modulo è rappresentato dal simbolo "%"...

Arrotondare un numero con Java

Quando si lavora con i numeri all'interno di un...

Java: cos’è l’errore NullPointerException e come risolverlo

RuntimeException รจ una superclasse di Java che ricomprende tutte...

Stringhe in Java

La gestione delle stringhe assume un ruolo fondamentale in...

Leggere un file di testo in java

In java ci sono diverse modalità per leggere dati...

Il costrutto foreach in java

Il foreach è un particolare costrutto (disponibile a partire...
Pubblicitร