2011-07-17 10 views
8

Tengo una lista de países en mi matriz, me gustaría elegir un país aleatorio de la lista (probablemente ¿al azar?), Pero no encontré la respuesta yo mismo ...Cadena aleatoria de la lista de matriz de cadenas

Esto es lo que tengo hasta ahora:

String[] list = {"Finland", "Russia", "Latvia", "Lithuania", "Poland"}; 
Random r = new Random(); 

Respuesta

27

Probar:

list[r.nextInt(list.length)]; 
+0

@roni: Burleigh Bear es correcto, el valor nunca será list.length. Según la documentación de Java: "Devuelve un valor int pseudoaleatorio, distribuido uniformemente entre 0 (incluido) y el valor especificado ** (exclusivo) **" – TaylorP

+0

Gracias Señor, justo lo que necesitaba. –

+0

@Burleigh Bear ¿Puede decirme por favor cómo puedo elegir una cadena aleatoria de esa matriz y también quiero otra cadena cada vez? Quiero decir, si no quiero repetir el valor de la cadena, qué modificación necesito en este código. – Kunu

0
list[Math.floor(r.nextFloat()*5.99)] 
+1

¿Por qué no 5 en lugar de 5.99? –

+0

debido al piso. no obtendrá una distribución uniforme ya que 5 solo será el resultado cuando getFloat regrese a 1.0. – roni

+0

Pero solo hay 5 entradas, por lo que desea una distribución uniforme para 0..4, no 5. –

0
private void pickText(){ 
    textview textView1= (TextView) findViewById(R.Id.textView1) 
    Random eventPicker = new Randorn(); 
    randomN = eventPicker.nextInt(3) +1; 

    switch (randomN){ 
     case 1: Intent a textview1.setText(StringOne); 
     break; 

     case 2: textview1.setText(StringTwo); 
     break; 

Lo escribí desde mi teléfono hay errores de sintaxis de prob pero funciona.

1

Se produjo un problema similar al tirar de una cadena aleatoria de una matriz de cadenas. encontrado que esto funciona bastante bien, lo apliqué a una acción de botón para que con cada clic una aleatoria se extrae (me encontré con cualquier tamaño de la matriz hay múltiples instancias de la misma cadena que se dibujan consecutivamente a lo largo):

import java.util.*; 
import java.util.Random.*; 

class Countries { 
    public Random g2 = new Random(); 
    public String[] list = new String[] { "Finland", "Russia", 
      "Latvia", "Lithuania", "Poland" }; 
    String random2; 
} 

// Applied to a button action: 
int INDEXn = g2.nextInt(list.length); 
for (int i2 = 0; i2 < INDEXn; i2++) { 
    random2 = (String) (list[INDEXn]); 
} 
System.out.println(random2 + '\n'); 

El g2 aleatorio que está siendo utilizado por INDEXn llama a un entero aleatorio, en este caso las cadenas definidas se convierten en valores enteros, de la matriz list. For-loop se desplaza por la matriz String una vez. La cadena random2 está convirtiendo el entero elegido de INDEXn a la variable de cadena apropiada en (list[INDEXn]).

1
static String getRandomString(){ 
     int r = (int) (Math.random()*5); 
     String name = new String [] {"India","USA","UK","Russia"}[r]; 
     return name; 
    } 
Cuestiones relacionadas