2010-05-23 16 views
5

Sto cercando di codificare un gioco seguendo le istruzioni contenute in un documento OU TMA che diceva:java.util.Random argomento a zero richiesta

Nel costruttore, scrivere il codice per assegnare una nuova istanza di Random a Ran, che si dovrebbe creare usando il costruttore di argomento zero della classe Random

Questo codice funziona?

Random ran = new Random(0) ; 

Sono un novizio relativo a Java, e non capisco esattamente cosa significano le istruzioni

+2

FWIW, ciò che * il * codice fa è creare un nuovo oggetto "casuale" con un * seme * di 0. La semina è una proprietà importante di un generatore di numeri casuali; significa che puoi ottenere sempre gli stessi numeri casuali (quando inizi dallo stesso seme). –

+2

Immagino che questo ci ricordi che "no argument" o "no-args" è meglio (meno ambiguo) della terminologia che "zero argument". –

risposta

6

No, questo non funzionerà. Un costruttore zero argomento è un costruttore che accetta non argomenti:

Random ran = new Random(); 

è la strada da percorrere.

La differenza dei due costruttori è ben descritto nella documentazione API:

Random()
creare un nuovo generatore di numeri casuali. Questo costruttore imposta il seme del generatore di numeri casuali su un valore molto probabilmente distinto da qualsiasi altra chiamata di questo costruttore.

Random(long seed)
creare un nuovo generatore di numero casuale utilizzando un unico lungo seme: public Random(long seed) { setSeed(seed); }

Cioè, un oggetto Random creato con un argomento, restituirà la stessa sequenza di numeri casuali ogni esecuzione del programma , mentre un oggetto creato tramite il costruttore zero-argument (o, "no argument constructor") farà del suo meglio per restituire sequenze diverse.