从ArrayList获取随机数?

Juu*_*tyy 3 java random math arraylist

ArrayList<Integer>  lista = new ArrayList<Integer>();
lista.add(159);
lista.add(170);
lista.add(256);
Run Code Online (Sandbox Code Playgroud)

例如,我在我的arraylist中得到了这3个数字,我想随机获得其中一个.怎么可能?

gal*_*ics 17

一种方法是使用Random类:

ArrayList<Integer>  lista = new ArrayList<Integer>();
lista.add(159);
lista.add(170);
lista.add(256);

Random r = new Random();
System.out.println(lista.get(r.nextInt(lista.size())));
Run Code Online (Sandbox Code Playgroud)

或者使用shuffle:

ArrayList<Integer>  lista = new ArrayList<Integer>();
lista.add(159);
lista.add(170);
lista.add(256);

Collections.shuffle(lista);
System.out.println(lista.get(0));
Run Code Online (Sandbox Code Playgroud)


Rav*_*yal 8

您可以使用Random生成一个int用作随机索引.

Random rand = new Random();
Integer randomInt = lista.get(rand.nextInt(lista.size()));
Run Code Online (Sandbox Code Playgroud)

在这里,rand.nextInt(lista.size())会生成0和之间的随机索引size - 1.

参考:
随机#nextInt(int)

返回从此随机数生成器的序列中提取的伪随机,均匀分布的int值,介于0(包括)和指定值(包括)之间.