1. 引言
在本快速教程中,我们将学习如何使用Java核心类生成没有重复的随机数。首先,我们将从头开始实现几种解决方案,然后利用Java 8+的特性来实现更可扩展的方法。
2. 小范围内的随机数
如果我们所需的数字范围较小,我们可以一直向列表中添加连续的数字,直到达到大小_n_。**然后,我们调用_Collections.shuffle()_,它具有线性时间复杂度。之后,我们将得到一个随机排序的唯一数字列表。**让我们创建一个实用工具类来生成和使用这些数字:
public class UniqueRng implements Iterator````<Integer>```` {
private List````<Integer>```` numbers = new ArrayList<>();
public UniqueRng(int n) {
for (int i = 1; i <= n; i++) {
numbers.add(i);
}
Collections.shuffle(numbers);
}
}
大约 3 分钟