2011-07-19 15 views
7

Potrzebuję wykonać losową liczbę z zakresu od 1 do 20, i na podstawie tej liczby (używając instrukcji "If - Then"), muszę ustawić obraz ImageView.Losowe liczby w Javie podczas pracy z Androidem

Wiem, że w Objective-C, to idzie tak:

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

Jak mogę to zrobić w Java? Widziałem to zrobić w ten sposób, ale nie widzę, jak mogę ustawić zakres liczb (1-20, 2-7, ect).

int aNumber = (int) Math.random() 

Odpowiedz

29

Docs are your friends

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

Dokumentacja:

Zwraca pseudolosowych, równomiernie rozproszone wartości int między 0 (włącznie) i określoną wartość (Exclusive), z tego wyciągnąć losowo sekwencja generatora liczb. Tak więc, z tego przykładu, będziemy mieć pewną liczbę między 0 a 19

+0

Dzięki. Próbowałem przeczytać dokumenty, ale szczerze mówiąc, zagubiłem się na tej stronie. Sądzę, że jestem jedną z tych osób, które potrafią programować, ale nie lol myślący. – Justin

+2

może być jeszcze krótszy: 'int n = new Random(). NextInt (20);' –

+0

Co? Bez nasion? Powściągliwość nie może przeważyć poprawności. – duffymo

5

Math.random() zwraca double z [0,1 [. Random.nextInt(int) zwraca int z [0, int [.

+0

@trutheality Złapałeś mnie: P Jak to możliwe, że 'int' ma wartość między 0 a 1? ^^ – Jeffrey

4

Można spróbować:

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

lub

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

To wygląda na to, co chcę, ale odpowiedź @trutheality już ma głos. Czy jest coś lepszego w tej odpowiedzi? – Justin

+0

Nie. Możesz zrobić jedno i drugie. Ale uwaga: powinieneś dodać 1, jeśli chcesz zacząć od 1, ponieważ zaczyna się od 0 (w zestawie) do 20 (wykluczone). – user802421

+0

'Math.random' nie tworzy instancji obiektu, natomiast' new Random() 'robi. – AlbeyAmakiir

0

Można użyć Math.random() w celu wygenerowania podwójne pomiędzy 0 i 1 niewłącznie. Android Javadoc here.

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

Możesz edytować swoje pytanie i wyjaśnić, dlaczego jest ono poprawne? – rjdkolb

Powiązane problemy