2011-07-19 14 views
7

Necesito hacer un número aleatorio entre 1 y 20, y basado en ese número (usando declaraciones "If - Then"), necesito establecer la imagen de un ImageView.Números aleatorios en Java cuando se trabaja con Android

sé que en Objective-C, que es la siguiente:

int aNumber = arc4Random() % 20; 
if (aNumber == 1) { 
    [theImageView setImage:theImage]; 
} 

¿Cómo se puede hacer esto en Java? Lo he visto hecho de esta manera, pero no veo cómo puedo establecer el rango de números (1-20, 2-7, etc.).

int aNumber = (int) Math.random() 

Respuesta

29

Docs are your friends

Random rand = new Random(); 
int n = rand.nextInt(20); // Gives n such that 0 <= n < 20 

Documentación:

Devuelve una pseudoaleatorio, valor int uniformemente distribuida entre 0 (inclusive) y el valor especificado (exclusivo), elaborado a partir de este azar secuencia del generador de números Por lo tanto, a partir de este ejemplo, tendremos un número entre 0 y 19

+0

Gracias. Intenté leer los documentos, pero estoy sinceramente perdido en ese sitio web. Supongo que soy una de esas personas que pueden hacer la programación, pero no el pensamiento jajaja. – Justin

+2

podría ser incluso más corto: 'int n = new Random(). NextInt (20);' –

+0

¿Qué? Sin semilla? La brevedad no puede superar la corrección. – duffymo

5

Math.random() devuelve un double de [0,1 [. Random.nextInt(int) devuelve int desde [0, int [.

+0

@trutheality Me atrapó: P ¿Cómo puede un 'int' estar entre 0 y 1 de todos modos? ^^ – Jeffrey

4

Puede probar:

int aNumber = (int) (20 * Math.random()) + 1; 

o

Random rand = new Random(); 
int n = rand.nextInt(20) + 1; 
+0

Esto parece lo que quiero, pero la respuesta de @trutheality ya tiene un voto. ¿Hay algo mejor acerca de esta respuesta? – Justin

+0

No. Puedes hacer ambas cosas Pero tenga en cuenta que debe agregar 1 si desea comenzar desde 1 porque comienza desde 0 (incluido) hasta 20 (excluido). – user802421

+0

'Math.random' no instancia un objeto, mientras que' new Random() 'sí lo hace. – AlbeyAmakiir

0

Puede utilizar Math.random() para generar un doble entre 0 y 1 no inclusive. Android Javadoc here.

-3
Random r = new Random(); 
int number = r.nextInt(100) + 1; 
+3

¿Puede editar su pregunta y explicar por qué es correcta? – rjdkolb

Cuestiones relacionadas