热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java实现生成指定数量的不重复随机数

本文将详细介绍如何使用Java编程语言生成指定数量的不重复随机数,包括具体的实现方法和代码示例。适合初学者和有一定基础的开发者参考。

在Java编程中,生成指定数量的不重复随机数是一个常见的需求。本文将通过具体示例展示如何实现这一功能。我们将使用Java的基本库来完成这项任务,并提供详细的代码解释。

### 需求说明:

根据给定的最小值(min)和最大值(max),生成n个不重复的随机数,其中n小于或等于(max - min + 1)。

### 实现思路:

1. 创建一个包含从min到max所有可能值的列表。

2. 使用随机索引从列表中选取一个值,并将其移除,确保每次选取的值不会重复。

### 代码示例:

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class UniqueRandomGenerator {
/**
* 生成一个在[min, max]范围内的随机数。
* @param min 最小值
* @param max 最大值
* @return 随机数
*/
public int generateSingleRandom(int min, int max) {
Random random = new Random();
return random.nextInt(max - min + 1) + min;
}

/**
* 生成指定数量的不重复随机数。
* @param min 最小值
* @param max 最大值
* @param count 需要生成的随机数数量
* @return 不重复的随机数数组
*/
public int[] generateUniqueRandoms(int min, int max, int count) {
if (count > (max - min + 1)) {
return null;
}

List candidateNumbers = new ArrayList<>();
for (int i = min; i <= max; i++) {
candidateNumbers.add(i);
}

int[] uniqueRandoms = new int[count];
Random random = new Random();
for (int i = 0; i int index = generateSingleRandom(0, candidateNumbers.size() - 1);
uniqueRandoms[i] = candidateNumbers.get(index);
candidateNumbers.remove(index);
}

return uniqueRandoms;
}
}

### 示例应用:

public class Main {
public static void main(String[] args) {
UniqueRandomGenerator generator = new UniqueRandomGenerator();
int[] randomNumbers = generator.generateUniqueRandoms(1, 20, 10);
for (int num : randomNumbers) {
System.out.println(num);
}
}
}

以上代码展示了如何在Java中生成指定数量的不重复随机数。希望对您有所帮助!


推荐阅读
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 本文探讨了在Java中如何正确地将多个不同的数组插入到ArrayList中,避免所有数组在插入后变得相同的问题。我们将分析代码中的问题,并提供解决方案。 ... [详细]
  • 本文介绍了如何利用Python进行批量图片尺寸调整,包括放大和等比例缩放。文中提供了详细的代码示例,并解释了每个步骤的具体实现方法。 ... [详细]
  • 社交网络中的级联行为 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • Java 实现二维极点算法
    本文介绍了一种使用 Java 编程语言实现的二维极点算法。该算法用于从一组二维坐标中筛选出极点,适用于需要处理几何图形和空间数据的应用场景。文章不仅详细解释了算法的工作原理,还提供了完整的代码示例。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • LeetCode 690:计算员工的重要性评分
    在解决LeetCode第690题时,我记录了详细的解题思路和方法。该问题要求根据员工的ID计算其重要性评分,包括直接和间接下属的重要性。本文将深入探讨如何使用哈希表(Map)来高效地实现这一目标。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 本教程详细介绍了如何使用 TensorFlow 2.0 构建和训练多层感知机(MLP)网络,涵盖回归和分类任务。通过具体示例和代码实现,帮助初学者快速掌握 TensorFlow 的核心概念和操作。 ... [详细]
  • This request pertains to exporting the hosted_zone_id attribute associated with the aws_rds_cluster resource in Terraform configurations. The absence of this attribute can lead to issues when integrating DNS records with Route 53. ... [详细]
  • 本文探讨了如何通过预处理器开关选择不同的类实现,并解决在特定情况下遇到的链接器错误。 ... [详细]
  • 本文介绍 Java 中如何使用 Year 类的 atMonth 方法将年份和月份组合成 YearMonth 对象,并提供代码示例。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
author-avatar
卧龙先生八斗才
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有