ArrayList<Integer> lista = new ArrayList<Integer>();
lista.add(159);
lista.add(170);
lista.add(256);
例如,我在我的数组列表中得到了这 3 个数字,我想随机获取其中一个。这怎么可能?
一种使用 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())));
或使用随机播放:
ArrayList<Integer> lista = new ArrayList<Integer>();
lista.add(159);
lista.add(170);
lista.add(256);
Collections.shuffle(lista);
System.out.println(lista.get(0));
您可以利用Random
生成一个int
用作随机索引。
Random rand = new Random();
Integer randomInt = lista.get(rand.nextInt(lista.size()));
在这里,将在和rand.nextInt(lista.size())
之间生成一个随机索引。0
size - 1
参考:
随机#nextInt(int)
返回一个伪随机、均匀分布的 int 值,介于 0(包括)和指定值(不包括)之间,取自该随机数生成器的序列。
这个想法是生成一个新的随机索引并使用该随机索引从数组中获取随机数。
为了那个原因
Math.random()
它返回一个带正号的双精度值,大于或等于 0.0 且小于 1.0。这为我们提供了以下代码。
int randomIndex = (int)(Math.random() * lista.size());
System.out.println(lista.get(randomIndex));
请注意,这里生成的随机数并不是真正随机的,而是使用伪随机生成器生成的,足以满足大多数日常使用。
如果您好奇,可以在此处阅读有关PRNG的更多信息 :)
对列表中的元素数量使用随机数并将其用作索引。
做这个:
Random rn = new Random();
int i = rn.nextInt() % lista.size();
System.out.println(lista.get(i));