如何在Java中生成不重复的随机数?避免随机数重复的技巧探讨
- 后端开发
- 2025-10-20
- 4
在Java中生成随机数时,为了防止重复,可以采用以下几种方法:

使用HashSet存储已生成的随机数
使用HashSet集合可以自动去除重复的元素,以下是实现步骤:
- 创建一个HashSet对象。
- 每次生成随机数后,将其添加到HashSet中。
- 如果HashSet的size等于所需的随机数个数,则停止生成。
import java.util.HashSet; import java.util.Random; import java.util.Set; public class RandomNumberWithoutDuplicates { public static void main(String[] args) { Set<Integer> randomNumbers = new HashSet<>(); Random random = new Random(); int count = 932; // 需要生成的随机数个数 while (randomNumbers.size() < count) { int randomNumber = random.nextInt(); // 生成一个随机数 randomNumbers.add(randomNumber); } for (int number : randomNumbers) { System.out.println(number); } } }
使用TreeSet存储已生成的随机数
TreeSet集合可以保持元素的有序性,同时自动去除重复元素,以下是实现步骤:

- 创建一个TreeSet对象。
- 每次生成随机数后,将其添加到TreeSet中。
- 如果TreeSet的size等于所需的随机数个数,则停止生成。
import java.util.Random; import java.util.TreeSet; public class RandomNumberWithoutDuplicates { public static void main(String[] args) { TreeSet<Integer> randomNumbers = new TreeSet<>(); Random random = new Random(); int count = 932; // 需要生成的随机数个数 while (randomNumbers.size() < count) { int randomNumber = random.nextInt(); // 生成一个随机数 randomNumbers.add(randomNumber); } for (int number : randomNumbers) { System.out.println(number); } } }
使用ArrayList和Collections.sort()去除重复
- 创建一个ArrayList对象。
- 每次生成随机数后,将其添加到ArrayList中。
- 使用Collections.sort()对ArrayList进行排序。
- 再次遍历ArrayList,将排序后的连续相同元素去除。
import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; public class RandomNumberWithoutDuplicates { public static void main(String[] args) { List<Integer> randomNumbers = new ArrayList<>(); Random random = new Random(); int count = 932; // 需要生成的随机数个数 while (randomNumbers.size() < count) { int randomNumber = random.nextInt(); // 生成一个随机数 randomNumbers.add(randomNumber); } Collections.sort(randomNumbers); // 对ArrayList进行排序 List<Integer> uniqueNumbers = new ArrayList<>(); for (int i = 0; i < randomNumbers.size(); i++) { if (i == 0 || !randomNumbers.get(i).equals(randomNumbers.get(i 1))) { uniqueNumbers.add(randomNumbers.get(i)); } } for (int number : uniqueNumbers) { System.out.println(number); } } }
FAQs
Q1:在Java中,如何生成一个指定范围的随机数?

A1: 在Java中,可以使用Random类的nextInt(int bound)方法生成一个指定范围的随机数,生成一个1到100的随机数,可以使用以下代码:
Random random = new Random(); int randomNumber = random.nextInt(100) + 1;
Q2:在Java中,如何生成一个具有重复元素的随机数列表?
A2: 在Java中,可以使用Random类的nextInt()方法生成随机数,并将它们添加到ArrayList中,以下是生成一个包含重复元素的随机数列表的示例代码:
import java.util.ArrayList; import java.util.Random; public class RandomNumberList { public static void main(String[] args) { ArrayList<Integer> randomNumbers = new ArrayList<>(); Random random = new Random(); int count = 10; // 需要生成的随机数个数 for (int i = 0; i < count; i++) { int randomNumber = random.nextInt(); // 生成一个随机数 randomNumbers.add(randomNumber); } for (int number : randomNumbers) { System.out.println(number); } } }