当前位置:首页 > 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

下载Java开发工具包(JDK) 访问Oracle官方网站或OpenJDK下载页面,选择适合操作系统的版本(Windows、macOS或Linux)。推荐下载最新的长期支持(LTS)版本,如Java…

如何学好java

如何学好java

理解基础概念 掌握Java的核心概念是学习的基础。包括数据类型、变量、运算符、控制流(如循环和条件语句)、数组等。理解面向对象编程(OOP)的四大特性:封装、继承、多态和抽象。 实践编程练习 通过实…

如何安装java软件

如何安装java软件

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

java如何导入jar包

java如何导入jar包

在Eclipse中导入JAR包 右键项目 -> 选择"Properties" -> 左侧导航选择"Java Build Path" -> 切换到"Libraries"标签 ->…

如何导入java项目

如何导入java项目

导入Java项目的方法 使用IDE导入(如IntelliJ IDEA或Eclipse) 打开IDE后选择导入现有项目,导航至项目根目录(包含pom.xml或build.gradle的文件位置)。IDE…

java 实现 php ord

java 实现 php ord

Java 实现 PHP 的 ord 函数 PHP 的 ord 函数用于获取字符串中第一个字符的 ASCII 值。在 Java 中,可以通过类型转换或直接使用字符的 Unicode 值实现类似功能。…