2017-02-15 25 views
2

Я учусь Java ArrayList, и я хочу, чтобы заполнить ArrayList из 20 Integer (s) со случайными числами от 0 до 10. Это мой код до сих пор:Перемешать с ArrayList

import java.util.ArrayList; 
import java.util.Collections; 

public class manejoListas { 
    ArrayList<Integer> lista=new ArrayList<>(20); 

    public void llenarLista() { 
     for (int i=0; i<20;i++) { 
       lista.add(i); 
     } 
     Collections.shuffle(lista); 
     System.out.println(lista); 
    } 
} 

и это выход:

[3, 5, 9, 10, 19, 8, 6, 4, 15, 2, 0, 18 , 16, 12, 14, 7, 17, 13, 1, 11]

Как я могу получить диапазон от 0 до 10?

ответ

1

Вы можете изменить

lista.add(i); 

в

lista.add(i/2); 

который уменьшит диапазон 0 (включительно) - 10 (эксклюзив). Обратите внимание, что каждое число будет отображаться дважды. Если вы хотите, значения должны быть более случайным образом распределены, вы могли бы использовать Random.nextInt(int) как

static Random rand = new Random(); 

public void llenarLista() { 
    for (int i = 0; i < 20; i++) { 
     lista.add(rand.nextInt(10)); 
    } 
    // Collections.shuffle(lista); 
    System.out.println(lista); 
} 
+0

Guess, можно удалить эту перетасовать полностью. OP путают с Shuffle и Random –

+0

Это было очень полезно, на следующей неделе у меня будет тест, и я буду практиковать все, что смогу. Танк вам очень нравится! :) –

+0

@ sᴜʀᴇsʜᴀᴛᴛᴀ Вы можете сделать это с помощью 'shuffle', см. Первую часть моего ответа. Но это означает, среди прочего, что последний элемент совершенно предсказуем. –

2

Java и я хочу, чтобы заполнить ArrayList из 20 элементов со случайными числами от 0 до 10

В в этом случае вам нужны случайные числа. Не перетасовать.

Random rn = new Random(); 

А потом

for (int i = 0; i < 20; i++) { 
     lista.add(rn.nextInt(10);); 
    } 

Это держит добавление случайных чисел между 0 и 10.