当前位置:首页 > Java

java如何生成随机数不重复的

2026-02-05 11:26:51Java

生成不重复随机数的方法

在Java中生成不重复的随机数有多种方法,以下是几种常见的实现方式:

使用Collections.shuffle方法

将数字放入列表中,打乱顺序后取出前N个元素:

List<Integer> numbers = new ArrayList<>();
for (int i = 1; i <= 100; i++) {
    numbers.add(i);
}
Collections.shuffle(numbers);
for (int i = 0; i < 10; i++) {
    System.out.println(numbers.get(i));
}

使用Set集合特性

利用Set不允许重复元素的特性:

Random random = new Random();
Set<Integer> set = new HashSet<>();
while (set.size() < 10) {
    set.add(random.nextInt(100) + 1);
}
for (Integer num : set) {
    System.out.println(num);
}

使用Fisher-Yates洗牌算法

直接实现洗牌算法:

int[] arr = new int[100];
for (int i = 0; i < arr.length; i++) {
    arr[i] = i + 1;
}
Random random = new Random();
for (int i = arr.length - 1; i > 0; i--) {
    int index = random.nextInt(i + 1);
    int temp = arr[index];
    arr[index] = arr[i];
    arr[i] = temp;
}
for (int i = 0; i < 10; i++) {
    System.out.println(arr[i]);
}

使用Stream API(Java 8+)

利用Stream的distinct和limit方法:

java如何生成随机数不重复的

Random random = new Random();
random.ints(1, 101)
      .distinct()
      .limit(10)
      .forEach(System.out::println);

注意事项

  • 当需要生成的随机数范围较大而数量较少时,Set方法效率较高
  • 当需要生成接近范围上限数量的随机数时,洗牌算法更合适
  • 对于大量数据,应考虑使用更高效的数据结构如BitSet
  • 在多线程环境下应使用ThreadLocalRandom替代Random

标签: 随机数java
分享给朋友:

相关文章

java如何上传文件

java如何上传文件

使用HttpURLConnection上传文件 在Java中,可以通过HttpURLConnection实现文件上传功能。需要设置请求头为multipart/form-data,并构建包含文件数据的请…

java中如何获取当前时间

java中如何获取当前时间

获取当前时间的几种方法 使用 java.time 包(Java 8及以上推荐) import java.time.LocalDateTime; LocalDateTime currentTime =…

如何系统的学习java

如何系统的学习java

学习Java的基础知识 Java的基础知识包括语法、数据类型、变量、运算符、控制流语句等。可以通过官方文档或入门书籍如《Java核心技术》来掌握这些内容。编写简单的程序练习基础语法,例如打印“Hell…

php 实现 java md5

php 实现 java md5

在 PHP 中实现与 Java 相同的 MD5 哈希算法,关键在于确保编码和输出格式的一致性。以下是具体实现方法和注意事项: 确保字符串编码一致 Java 的 String.getBytes() 默…

java如何创建文件

java如何创建文件

创建文件的方法 在Java中创建文件可以通过多种方式实现,以下是常见的几种方法: 使用File.createNewFile()方法 这种方法适用于简单的文件创建需求。需要先创建一个File对象,然…

如何用java

如何用java

使用Java进行开发 Java是一种广泛使用的编程语言,适用于多种应用场景,包括Web开发、移动应用开发、企业级应用等。以下是Java开发的基本步骤和常见应用场景。 安装Java开发环境 下载并安装…