2010-05-23 7 views
5

Estoy tratando de codificar un juego siguiendo las instrucciones contenidas en un documento OU TMA que decía:java.util.Random argumento cero consulta

En el constructor, escribir código para asignar una nueva instancia de Random RAN a la que debe crear utilizando el constructor de argumentos cero de la clase Aleatoria

¿Funcionará este código?

Random ran = new Random(0) ; 

yo soy un novato en relación con Java, y no entiendo exactamente lo que significan las instrucciones

+2

FWIW, lo que * su * código hace es crear un nuevo objeto 'Aleatorio' con una * semilla * de 0. Sembrar es una propiedad importante de un generador de números aleatorios; significa que puede obtener los mismos números aleatorios cada vez (cuando comienza desde la misma semilla). –

+2

Supongo que esto es un recordatorio para todos nosotros de que "no argumento" o "no-args" es una terminología mejor (es decir, menos ambigua) que "argumento cero". –

Respuesta

6

No, eso no funcionará. Un constructor sin argumentos es un constructor que toma no hay argumentos:

Random ran = new Random(); 

es el camino a seguir.

La diferencia de los dos constructores está bien descrito en los documentos de la API:

Random()
Crea un nuevo generador de números aleatorios. Este constructor establece la semilla del generador de números aleatorios en un valor muy probablemente distinto de cualquier otra invocación de este constructor.

Random(long seed)
Crea un nuevo generador de números aleatorios utilizando una sola semilla larga: public Random(long seed) { setSeed(seed); }

Es decir, un objeto aleatorio creado con un argumento, devolverá la misma secuencia de números aleatorios cada ejecución del programa , mientras que un objeto creado a través del constructor de argumento cero (o "constructor sin argumento") hará todo lo posible para devolver secuencias diferentes.