当前位置:首页 > Java

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

2026-03-03 22:44:29Java

Java生成不重复随机数的方法

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

使用HashSet存储随机数

利用HashSet不允许重复元素的特性,可以确保生成的随机数不重复。每次生成随机数后添加到HashSet中,如果添加失败则重新生成。

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

import java.util.HashSet;
import java.util.Random;

public class UniqueRandom {
    public static void main(String[] args) {
        HashSet<Integer> set = new HashSet<>();
        Random random = new Random();
        int count = 10; // 生成10个不重复的随机数
        int range = 100; // 随机数范围0-99

        while (set.size() < count) {
            int num = random.nextInt(range);
            set.add(num);
        }

        System.out.println(set);
    }
}

使用Collections.shuffle方法

如果需要生成一定范围内的不重复随机数,可以先将范围内的所有数字存入列表,然后打乱顺序,最后取出前N个数字。

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

import java.util.ArrayList;
import java.util.Collections;

public class UniqueRandom {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        int range = 100; // 随机数范围0-99
        int count = 10; // 生成10个不重复的随机数

        for (int i = 0; i < range; i++) {
            list.add(i);
        }

        Collections.shuffle(list);

        for (int i = 0; i < count; i++) {
            System.out.println(list.get(i));
        }
    }
}

使用Streamdistinct方法

Java 8及以上版本可以使用Streamdistinct方法生成不重复的随机数。

import java.util.Random;
import java.util.stream.IntStream;

public class UniqueRandom {
    public static void main(String[] args) {
        Random random = new Random();
        int count = 10; // 生成10个不重复的随机数
        int range = 100; // 随机数范围0-99

        IntStream.generate(() -> random.nextInt(range))
                .distinct()
                .limit(count)
                .forEach(System.out::println);
    }
}

使用LinkedHashSet保持顺序

如果需要保持生成的随机数的顺序,可以使用LinkedHashSet

import java.util.LinkedHashSet;
import java.util.Random;

public class UniqueRandom {
    public static void main(String[] args) {
        LinkedHashSet<Integer> set = new LinkedHashSet<>();
        Random random = new Random();
        int count = 10; // 生成10个不重复的随机数
        int range = 100; // 随机数范围0-99

        while (set.size() < count) {
            int num = random.nextInt(range);
            set.add(num);
        }

        System.out.println(set);
    }
}

注意事项

  1. 随机数范围:确保随机数的范围足够大,否则可能无法生成足够数量的不重复随机数。
  2. 性能问题:如果生成大量不重复随机数,HashSet方法可能会因为重复尝试而影响性能,此时Collections.shuffle方法更高效。
  3. 线程安全:在多线程环境下,应使用ThreadLocalRandom代替Random以提高性能并避免竞争条件。

以上方法可以根据具体需求选择使用。

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

相关文章

java如何创建文件

java如何创建文件

使用 File 类创建文件 通过 File 类的 createNewFile() 方法创建文件。此方法返回布尔值,表示文件是否成功创建。 import java.io.File; import ja…

如何配置java

如何配置java

安装Java开发工具包(JDK) 访问Oracle官方网站或OpenJDK项目页面下载适合操作系统的JDK安装包。选择与系统架构匹配的版本(如Windows x64、macOS ARM等)。运行安装程…

java如何读取文件

java如何读取文件

读取文件的常用方法 Java提供了多种读取文件的方式,适用于不同场景和需求。以下是几种常见的方法: 使用FileInputStream和BufferedInputStream读取二进制文件…

java如何创建类

java如何创建类

创建类的基本语法 在Java中,类通过class关键字定义,语法如下: [访问修饰符] class 类名 { // 成员变量(属性) // 构造方法 // 成员方法 }…

如何安装java软件

如何安装java软件

下载Java安装包 访问Oracle官方网站或OpenJDK开源项目页面,选择适合操作系统的Java版本(如Windows、macOS或Linux)。对于个人使用,通常下载JDK(Java Devel…

如何搭建java开发环境

如何搭建java开发环境

下载并安装JDK 从Oracle官网或OpenJDK下载适合操作系统的JDK版本。运行安装程序并按照提示完成安装,建议选择默认路径以减少配置复杂度。 配置环境变量 在系统环境变量中添加JAVA_H…