Java中如何获取不重复的随机数

在Java编程中,有时候我们需要生成一系列不重复的随机数,这通常用于抽奖、随机排序等场景,Java提供了多种方式来实现这一需求,以下是一些常见的方法和步骤。
使用HashSet存储不重复的随机数
HashSet是一个不包含重复元素的集合,因此可以利用它来存储生成的随机数,确保所有数字都是唯一的。

步骤:
- 创建一个
HashSet实例。 - 循环生成随机数,并将其添加到
HashSet中。 - 当
HashSet的大小达到所需随机数的数量时,停止循环。
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class UniqueRandomNumbers {
public static void main(String[] args) {
int numberOfRandoms = 10; // 需要生成的随机数数量
Set<Integer> randomNumbers = new HashSet<>();
Random random = new Random();
while (randomNumbers.size() < numberOfRandoms) {
int randomNumber = random.nextInt(); // 生成一个随机数
randomNumbers.add(randomNumber); // 将随机数添加到HashSet中
}
// 输出不重复的随机数
for (int number : randomNumbers) {
System.out.println(number);
}
}
}
使用ArrayList和Collections.shuffle()方法
如果你需要生成一个固定范围的随机数序列,可以使用ArrayList结合Collections.shuffle()方法来打乱顺序,从而得到一个不重复的随机数序列。
步骤:
- 创建一个
ArrayList,并填充所需范围内的所有数字。 - 使用
Collections.shuffle()方法打乱ArrayList中的元素顺序。 - 从打乱后的列表中取出所需数量的随机数。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class UniqueRandomNumbersRange {
public static void main(String[] args) {
int start = 1; // 随机数范围开始
int end = 100; // 随机数范围结束
int numberOfRandoms = 10; // 需要生成的随机数数量
List<Integer> numbers = new ArrayList<>();
// 填充ArrayList
for (int i = start; i <= end; i++) {
numbers.add(i);
}
// 打乱ArrayList
Collections.shuffle(numbers);
// 输出不重复的随机数
for (int i = 0; i < numberOfRandoms; i++) {
System.out.println(numbers.get(i));
}
}
}
使用Random类和ThreadLocalRandom类
Java 7引入了ThreadLocalRandom类,它是专为多线程环境设计的,可以提供更好的随机数生成性能。

步骤:
- 创建一个
Random或ThreadLocalRandom实例。 - 使用
nextInt()方法生成随机数,并确保范围在所需范围内。 - 将生成的随机数存储在合适的数据结构中,如
HashSet或ArrayList。
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class UniqueRandomNumbersThreadLocal {
public static void main(String[] args) {
int numberOfRandoms = 10; // 需要生成的随机数数量
Set<Integer> randomNumbers = new HashSet<>();
Random random = new Random();
while (randomNumbers.size() < numberOfRandoms) {
int randomNumber = random.nextInt(100); // 生成一个0到99的随机数
randomNumbers.add(randomNumber); // 将随机数添加到HashSet中
}
// 输出不重复的随机数
for (int number : randomNumbers) {
System.out.println(number);
}
}
}
是Java中获取不重复随机数的几种常见方法,根据实际需求选择合适的方法,可以有效地生成所需的随机数序列。



















