当前位置:首页 > 后端开发 > 正文

如何在Java中生成不重复的随机数?避免随机数重复的技巧探讨

在Java中生成随机数时,为了防止重复,可以采用以下几种方法:

如何在Java中生成不重复的随机数?避免随机数重复的技巧探讨 第1张

使用HashSet存储已生成的随机数

使用HashSet集合可以自动去除重复的元素,以下是实现步骤:

  1. 创建一个HashSet对象。
  2. 每次生成随机数后,将其添加到HashSet中。
  3. 如果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集合可以保持元素的有序性,同时自动去除重复元素,以下是实现步骤:

如何在Java中生成不重复的随机数?避免随机数重复的技巧探讨 第2张

  1. 创建一个TreeSet对象。
  2. 每次生成随机数后,将其添加到TreeSet中。
  3. 如果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()去除重复

  1. 创建一个ArrayList对象。
  2. 每次生成随机数后,将其添加到ArrayList中。
  3. 使用Collections.sort()对ArrayList进行排序。
  4. 再次遍历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中,如何生成一个指定范围的随机数?

如何在Java中生成不重复的随机数?避免随机数重复的技巧探讨 第3张

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); } } }

0