java随机数Random类

news/2025/1/11 21:13:02/

在 Java 中,Random 类用于生成随机数。它是 java.util 包的一部分,可以生成不同类型的随机数,例如整数、浮点数、布尔值等。Random 类的实例可以用来产生各种随机数据,广泛应用于游戏、测试、加密、数据模拟等场景。

1. 创建 Random 对象

要使用 Random 类,首先需要创建一个 Random 类的实例。你可以通过以下方式创建:

import java.util.Random;public class RandomExample {public static void main(String[] args) {Random random = new Random();  // 创建一个随机数生成器}
}

你也可以传递一个种子值(seed),这样每次使用相同的种子生成的随机数序列都是一样的:

Random randomWithSeed = new Random(12345);  // 使用种子值

2. 生成不同类型的随机数

Random 类提供了多个方法来生成不同类型的随机数。

  1. 生成整数(int)
    使用 nextInt() 方法可以生成一个随机的整数。它可以接受一个参数作为范围限制,生成一个从 0 到指定数值(不包括该数值)之间的随机整数。
int randInt = random.nextInt();  // 生成一个随机的整数(范围很大)
int randIntRange = random.nextInt(100);  // 生成一个 099 之间的随机整数
  1. 生成布尔值(boolean)
    使用 nextBoolean() 方法可以生成一个随机的布尔值,返回 true 或 false。
boolean randBool = random.nextBoolean();
  1. 生成浮点数(float 和 double)
    使用 nextFloat() 或 nextDouble() 方法生成一个随机的浮点数。
  • nextFloat() 生成一个 [0.0, 1.0) 之间的浮点数。
  • nextDouble() 生成一个 [0.0, 1.0) 之间的双精度浮点数。
java">float randFloat = random.nextFloat();  // 生成一个 0.0 到 1.0 之间的随机浮点数
double randDouble = random.nextDouble();  // 生成一个 0.0 到 1.0 之间的随机双精度浮点数
  1. 生成长整数(long)
    使用 nextLong() 方法生成一个随机的长整数(long)。
java">long randLong = random.nextLong();
  1. 生成字节数组(byte[])
    Random 还提供了 nextBytes(byte[] bytes) 方法,用于填充一个字节数组,生成随机字节。
java">byte[] byteArray = new byte[10];
random.nextBytes(byteArray);  // 将 byteArray 填充为 10 个随机字节

3. 使用 Random 生成指定范围的随机数

有时我们需要生成一个指定范围内的随机数,例如 1 到 100 之间的整数。可以通过 nextInt() 方法来实现。

java">public class RandomRangeExample {public static void main(String[] args) {Random random = new Random();// 生成一个 1 到 100 之间的随机整数(包含 1 和 100)int min = 1;int max = 100;int randInRange = random.nextInt(max - min + 1) + min;System.out.println("Random number between 1 and 100: " + randInRange);}
}

方法2

用来生成任意数到任意数之间的随机数 7–15
1 让这个范围头尾都减去一个值,让这个范围从0开始 -7 (0–8)
2 尾巴加一 8+1=9
3 最终结果,再加上第一步减去的值

int unmber = r.nextInt(9)+7

4. ThreadLocalRandom 类

在多线程环境下,使用 Random 可能会导致线程间的竞争,因为多个线程共享同一个 Random 实例。为了解决这个问题,Java 提供了 ThreadLocalRandom 类,它为每个线程提供独立的随机数生成器。

java">import java.util.concurrent.ThreadLocalRandom;public class ThreadLocalRandomExample {public static void main(String[] args) {// 使用 ThreadLocalRandom 生成随机数int randInRange = ThreadLocalRandom.current().nextInt(1, 101);  // 生成 1 到 100 之间的随机整数System.out.println("Random number between 1 and 100: " + randInRange);}
}

5. SecureRandom 类

如果你需要生成加密级别的随机数(例如用于密码、令牌等),可以使用 SecureRandom 类。它提供比 Random 更加安全的随机数生成方法。

java">import java.security.SecureRandom;public class SecureRandomExample {public static void main(String[] args) {SecureRandom secureRandom = new SecureRandom();// 生成一个 [0, 100] 范围的安全随机整数int rand = secureRandom.nextInt(101);  // 生成 0 到 100 之间的安全随机整数System.out.println("Secure random number: " + rand);}
}

http://www.ppmy.cn/news/1561900.html

相关文章

HarmonyOS UIAbility 生命周期与窗口管理实践

HarmonyOS UIAbility 生命周期与窗口管理实践 引言 在HarmonyOS应用开发中,UIAbility是应用的核心组件之一,负责管理应用的生命周期和窗口行为。理解UIAbility的生命周期方法以及如何管理窗口是开发高效、稳定应用的关键。本文将通过分析一个名为Entry…

Spring AOP原理详解-Spring官方原版

一、概述 面向方面编程(AOP)补充了面向对象编程(OOP) 提供了另一种思考程序结构的方式。模块化的关键单元 在OOP中是类,而在AOP中,模块化的单位是方面。方面 实现跨越问题(如事务管理&#xff…

MySQL 数据库性能调优指南

MySQL 是广泛使用的关系型数据库,其性能调优直接影响系统的响应速度和用户体验。在本篇文章中,我们将全面探讨 MySQL 性能调优的关键技术,包括查询优化、索引设计、配置调整、分区和分库分表等内容。 一、性能调优的基础 1. 确定性能瓶颈 性能调优的第一步是定位瓶颈,可以…

科研绘图系列:R语言科研绘图之标记热图(heatmap)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理画图系统信息参考介绍 科研绘图系列:R语言科研绘图之标记热图(heatmap) 加载R包 library(tidyverse) library(ggplot2) library(reshape)…

java进阶之maven

Maven Maven问题处理本地jar包导入本地maven库 Maven基础什么是mavenidea整合mavenmaven目录maven仓库maven远程仓库maven本地仓库 仓库的配置jdk的配置本地仓库的配置镜像仓库的配置访问仓库的优先级别如何在idea中进行配置 maven工程的类型POM模式-Maven工程关系依赖关系如何…

ASP.NET Core实现微服务--什么是微服务

微服务是这几年最流行的架构,说起架构不提微服务都不好意思跟人家打招呼。最近想要再梳理一下关于微服务的知识,并且结合本人的一些实践经验来做一些总结与分享。前面会分享一些概念性的东西,后面也会使用.net来实践,一步步完成一…

【Java基础】使用Apache POI和Spring Boot实现Excel文件上传和解析功能

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

[豆包MarCode AI 刷题] 算法题解 Java 青训入营考核 五题打卡第三天

目录 11 中 观光景点组合得分问题 55 易 小E的射击训练 47 易 完美偶数计数 48 易 替换函数 70 易 打点计数器的区间合并 欢迎你报名豆包MarsCode 青训营-寒假专场!非常开心你加入这个充满活力和创新的大家庭。在这里,你将遇到一群和你一样对技术充…