2011-07-17 28 views
8

Mam listę krajów w mojej tablicy, chciałbym wybrać losowy kraj z listy (używając losowego prawdopodobnie?), Ale sam nie znalazłem odpowiedzi ...Losowy ciąg znaków z listy ciągów znaków

to, co mam tak daleko:

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

Odpowiedz

27

Spróbuj:

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

@roni: Niedźwiedź Burleigh jest poprawny, wartość nigdy nie będzie list.length. Zgodnie z dokumentacją Java: "Zwraca pseudolosową, równomiernie rozłożoną wartość int między 0 (włącznie) i określoną wartością ** (wyłączną) **" – TaylorP

+0

Dziękuję Sir, właśnie to, czego potrzebowałem. –

+0

@Burleigh Bear Czy możesz mi powiedzieć, jak mogę wybrać losowy ciąg znaków z tej tablicy, a także chcę za każdym razem inny ciąg znaków. Chodzi mi o to, że jeśli nie chcę powtarzać wartości ciągu, potrzebuję modyfikacji w tym kodzie. – Kunu

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

Dlaczego nie 5 zamiast 5,99? –

+0

ze względu na podłogę. nie dostaniesz jednolitej dystrybucji, ponieważ 5 będzie tylko wynikiem, gdy getFloat zwróci 1.0. – roni

+0

Ale jest tylko 5 wpisów, więc chcesz jednolitego rozkładu dla 0..4 nie 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; 

Napisałem to z mojego telefonu, ale ma błędy składniowe, ale działa.

1

Wystąpił podobny problem z ciągnięciem losowego ciągu znaków z tablicy ciągów znaków. stwierdziliśmy, że ten dość dobrze pracować, zastosowałem go do działania przycisku tak, ze każde kliknięcie losowa jest zasysane (z dowolnego rozmiaru tablicy znalazłem istnieje wiele instancji tego samego łańcucha rysowane są kolejno w całym tekście):

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'); 

Losowa nazwa, która jest używana przez INDEXn, wywołuje losową liczbę całkowitą, w tym przypadku zdefiniowane ciągi są zamieniane na wartości całkowite z tablicy String list. Pętla for służy do cyklicznego przechodzenia przez tablicę String. Łańcuch losowy2 konwertuje wybraną liczbę całkowitą z INDEXn na odpowiednią zmienną łańcuchową w (list[INDEXn]).

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