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:

Pubblicitร 
[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();

Altri contenuti interessanti

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...

Vibe Coding: cosโ€™รจ, come funziona e quali sono i migliori strumenti AI per programmare

Immagina di poter scrivere software senza dover digitare una...

I migliori libri per imparare a programmare in Python

Imparare a programmare in Python รจ un passo fondamentale...

Il file manifest.json: cos’รจ e a cosa serve

Il file manifest.json รจ un componente chiave nelle applicazioni web moderne,...

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

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

Radice quadrata in C: vediamo come calcolarla in diversi modi

La radice quadrata è un'operazione matematica piuttosto comune (in...

Sperimentare la sequenza di Collatz in C++

Vediamo come verificare la congettura di Collatz con C++....
Pubblicitร