Un'istanza della classe java.util.Random può essere usata per generare numeri casuali in Java.
Un numero intero casuale può essere generato usando il metodo nextInt().
Questo genera un valore nell'intervallo da Integer.MIN_VALUE a Integer.MAX_VALUE.
Random random = new Random();
random.nextInt();
// => -1169335537
Per limitare l'intervallo dei valori generati, usa nextInt(int).
Questo genera un valore nell'intervallo da 0 (incluso) al limite superiore indicato (escluso).
Per esempio, questo genera un numero casuale da 0 a 9.
Random random = new Random();
random.nextInt(10);
// => 6
E questo genera un numero casuale da 10 a 19.
Random random = new Random();
10 + random.nextInt(10);
// => 11
Un numero in virgola mobile casuale può essere generato usando il metodo nextDouble().
Questo genera un valore nell'intervallo da 0.0 a 1.0.
Random random = new Random();
random.nextDouble();
// => 0.19250004204021398
E questo genera un numero casuale da 100.0 a 200.0.
Random random = new Random();
100.0 + 100.0 * random.nextDouble();
// => 111.31849856260328
Mary è una grande fan della serie TV Star Trek: The Next Generation. Spesso gioca a giochi di ruolo cartacei, in cui lei e i suoi amici fingono di essere l'equipaggio della Starship Enterprise. Il personaggio di Mary è il Capitano Picard, il che significa che deve tenere il diario di bordo del capitano. Ama la parte creativa del gioco, ma non le piace generare dati casuali sul momento.
Aiuta Mary creando dei generatori casuali per i dati che compaiono abitualmente nel diario di bordo del capitano.
L'implementazione iniziale di questo esercizio accetta come argomento del costruttore un'istanza di java.util.Random.
Questo permette ai test dell'esercizio di passare un'istanza con un seed predefinito, il che rende prevedibili i risultati dei test.
Per questo motivo, ci si aspetta che tu usi l'istanza di java.util.Random fornita nell'implementazione.
Nei suoi viaggi, la Starship Enterprise incontra molti pianeti.
I pianeti dell'universo di Star Trek sono divisi in categorie in base alle loro proprietà.
Per esempio, la Terra è un pianeta di classe M.
Tutte le classi planetarie possibili sono: D, H, J, K, L, M, N, R, T e Y.
Implementa il metodo randomPlanetClass().
Deve restituire una delle classi planetarie, scelta a caso.
captainsLog.randomPlanetClass();
// => "K"
L'Enterprise (numero di registrazione NCC-1701) non è l'unica astronave in circolazione!
Quando si incontra con un'altra astronave, Mary deve annotare il numero di registrazione di quell'astronave.
I numeri di registrazione iniziano con il prefisso "NCC-" e poi usano un numero da 1000 a 9999 (inclusi).
Implementa il metodo randomShipRegistryNumber() che restituisce un numero di registrazione casuale di un'astronave.
captainsLog.randomShipRegistryNumber();
// => "NCC-1947"
A cosa serve un diario di bordo se non contiene le date?
Una data stellare è un numero in virgola mobile.
Le avventure della Starship Enterprise della prima stagione di The Next Generation si svolgono tra le date stellari 41000.0 e 42000.0.
Il "4" sta per il XXIV secolo e il "1" per la prima stagione.
Implementa il metodo randomStardate() che restituisce un numero in virgola mobile compreso tra 41000.0 (incluso) e 42000.0 (escluso).
captainsLog.randomStardate();
// => 41458.15721310934
Iscriviti a Exercism per imparare e padroneggiare Java con 26 concetti158 esercizi e il mentoring di persone reali, tutto gratis.