当前位置:首页 > Java

java如何生成随机数不重复

2026-02-05 10:58:23Java

生成不重复随机数的方法

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

使用Collections.shuffle

通过将数字放入列表并打乱顺序来确保不重复:

java如何生成随机数不重复

List<Integer> numbers = new ArrayList<>();
for (int i = 1; i <= 100; i++) {
    numbers.add(i);
}
Collections.shuffle(numbers);
// 取前N个不重复随机数
for (int i = 0; i < 10; i++) {
    System.out.println(numbers.get(i));
}

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

利用Set自动去重的特性:

Random random = new Random();
Set<Integer> uniqueNumbers = new HashSet<>();
while (uniqueNumbers.size() < 10) {
    int num = random.nextInt(100) + 1;
    uniqueNumbers.add(num);
}
// 输出结果
for (Integer num : uniqueNumbers) {
    System.out.println(num);
}

使用Java 8的Stream API

利用Java 8的流式操作生成不重复随机数:

java如何生成随机数不重复

Random random = new Random();
List<Integer> uniqueRandoms = random.ints(1, 101)
    .distinct()
    .limit(10)
    .boxed()
    .collect(Collectors.toList());
// 输出结果
uniqueRandoms.forEach(System.out::println);

使用Fisher-Yates洗牌算法

实现自定义的洗牌算法:

int[] array = new int[100];
for (int i = 0; i < array.length; i++) {
    array[i] = i + 1;
}
Random random = new Random();
for (int i = array.length - 1; i > 0; i--) {
    int index = random.nextInt(i + 1);
    int temp = array[index];
    array[index] = array[i];
    array[i] = temp;
}
// 取前10个元素
for (int i = 0; i < 10; i++) {
    System.out.println(array[i]);
}

使用BitSet跟踪已生成的数字

对于大范围随机数生成,可以使用BitSet提高效率:

Random random = new Random();
BitSet used = new BitSet(101);
int count = 0;
while (count < 10) {
    int num = random.nextInt(100) + 1;
    if (!used.get(num)) {
        used.set(num);
        count++;
        System.out.println(num);
    }
}

每种方法适用于不同的场景,选择时应考虑性能需求和随机数范围大小。对于小范围随机数,Collections.shuffle或Set方法简单高效;对于大范围随机数,Fisher-Yates或BitSet方法更节省内存。

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

相关文章

java如何下载

java如何下载

下载Java的步骤 访问Oracle官方网站或OpenJDK项目页面下载Java开发工具包(JDK)。Oracle JDK适用于商业用途,OpenJDK为开源版本。 打开浏览器,进入Oracle J…

java如何学习

java如何学习

学习Java的有效方法 理解基础概念 Java是一门面向对象的编程语言,掌握基础概念如变量、数据类型、运算符、控制语句(if-else、循环)是必要的。面向对象的核心概念包括类、对象、继承、多态和封装…

如何编译java文件

如何编译java文件

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证。若未安装,需从Oracle或Open…

如何配置java环境变量

如何配置java环境变量

下载并安装JDK 从Oracle官网或OpenJDK项目下载适合操作系统的JDK安装包。运行安装程序,按照提示完成安装,默认路径通常为C:\Program Files\Java\jdk-版本号。 配…

java如何处理高并发

java如何处理高并发

Java处理高并发的方法 使用多线程和线程池 Java的java.util.concurrent包提供了线程池(如ThreadPoolExecutor)和并发工具类(如CountDownLatch、C…

win7如何配置java环境变量

win7如何配置java环境变量

下载并安装Java 从Oracle官网下载适合的Java Development Kit (JDK)安装包,选择与系统位数(32位或64位)匹配的版本。运行安装程序,按照提示完成安装,默认路径通常为C…