MAth类与Random类

Math类

Math类是Java编程语言中的一个工具类,它包含了一系列用于执行基本数学运算的静态方法;由于Math类中构造方法的访问权限是private,所以无法创建Math类的对象;Math类中的所有方法都是静态方法,可以通过类名直接调用Math类中的方法,出静态方法外,Math类中还定义了两个静态变量,分别为PI和E

Math类提供的方法可以帮助开发人员轻松地进行常见的数学计算,如指数、对数、平方根和三角函数等

以下是Math类中一些常用的方法:

1. `Math.abs(int a)`: 返回给定整数的绝对值

例如,Math.abs(-10)

返回10

2. `Math.ceil(double a)`: 返回大于或等于给定double值的最小整数

例如,Math.ceil(3.14)

返回4


3. `Math.floor(double a)`: 返回小于或等于给定double值的最大整数

例如,Math.floor(3.14)

返回3


4. `Math.random()`: 返回一个伪随机数,该数在0.0(包括0.0)和1.0(但不包括1.0)之间


5. `Math.round(double a)`: 返回最接近给定double值的long整数;如果两个整数距离该值相等,则返回偶数

例如,Math.round(3.5)

返回4

Math.round(2.5)

返回3


6. `Math.sqrt(double a)`: 返回给定非负double值的正平方根

例如,Math.sqrt(9)

返回3.0

除了上述方法,Math类还提供了许多其他用于数学运算的方法,如幂运算(`Math.pow()`)、对数运算(`Math.log()`)、三角函数(`Math.sin()`、`Math.cos()`、`Math.tan()`)等;这些方法在进行数学计算时非常有用,可以大大提高编程效率

Random类

一、Random类介绍

Random类是Java编程语言中的一个工具类,用于生成各种随机数据;它属于java.util包,提供了多种生成随机数的方法,如生成随机整数、随机浮点数、随机布尔值等;Random类在模拟、测试、游戏开发等领域有着广泛的应用

二、常用方法

1. nextInt(int bound)

生成一个随机的int值,该值在0(包括0)到指定的bound(不包括bound)之间。例如,nextInt(10)将生成一个0到9之间的随机整数。

示例代码:

Random random = new Random();
int randomInt = random.nextInt(10);
System.out.println(randomInt); // 输出0到9之间的随机整数


2. nextInt(int start, int end)

生成一个随机的int值,该值在指定的start(包括start)和end(不包括end)之间;

例如,nextInt(10, 20)将生成一个10到19之间的随机整数。

示例代码:

Random random = new Random();
int randomInt = random.nextInt(10, 20);
System.out.println(randomInt); // 输出10到19之间的随机整数


3. nextFloat()

生成一个随机的float值,该值在0.0(包括0.0)到1.0(不包括1.0)之间

示例代码:

Random random = new Random();
float randomFloat = random.nextFloat();
System.out.println(randomFloat); // 输出0.0到1.0之间的随机浮点数


4. nextDouble()

生成一个随机的double值,该值在0.0(包括0.0)到1.0(不包括1.0)之间

示例代码:

Random random = new Random();
double randomDouble = random.nextDouble();
System.out.println(randomDouble); // 输出0.0到1.0之间的随机浮点数


5. nextBoolean()

生成一个随机的boolean值,即true或false

示例代码:

Random random = new Random();
boolean randomBoolean = random.nextBoolean();
System.out.println(randomBoolean); // 输出true或false

除了以上常用方法外,Random类还提供了其他多种生成随机数的方法,如生成随机长整型(nextLong)、随机字节数组(nextBytes)等;这些方法可以根据需要选择合适的来生成所需的随机数

三.构造方法

Random类在Java中提供了多种构造方法来创建随机数生成器对象;以下是Random类的主要构造方法及其描述:

1. 无参构造方法

public Random()


   这是Random类的默认构造方法,它创建一个新的随机数生成器;这个生成器被初始化为一个不可预测的值,通常基于系统时间;使用此构造方法创建的Random实例将生成一系列均匀分布的伪随机数。

   示例代码:
   

Random random = new Random();

2. 带有单一long种子的构造方法

public Random(long seed)


   此方法使用给定的long值作为种子来创建一个新的随机数生成器;种子值会影响生成器产生的随机数序列;如果两个Random实例使用相同的种子创建,那么它们的`nextInt()`方法将产生相同的随机数序列

   示例代码:

  long seed = System.currentTimeMillis(); // 使用当前时间作为种子Random random = new Random(seed);

   通常,如果你不传递种子值给Random构造方法,那么系统会使用默认的无参构造方法,它会自动选择一个种子值;然而,如果你需要能够重现同一随机序列,或者需要两个或多个随机数生成器产生相同的序列,那么可以使用带有种子的构造方法

无论你选择哪种构造方法,创建的Random对象都可以用来生成各种随机数据,如之前提到的`nextInt()`, `nextFloat()`, `nextDouble()`, `nextBoolean()`等方法

请注意,由于Random类生成的是伪随机数,因此它们不是真正的随机。它们是通过一个确定的算法从给定的种子值计算得出的;尽管如此,伪随机数在许多应用中都足够好,例如模拟和测试;对于需要更高随机性的场景(例如加密),应使用更强大的随机数生成器;

如`java.security.SecureRandom`类

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/728011.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS复合选择器(三)

伪元素选择器 作用:选中元素中的一些特殊位置。 常用伪元素: ::first-letter 选中元素中的第一个文字。::first-line 选中元素中的第一行文字。::selection选中被鼠标选中的内容。::placeholder 选中输入框的提示文字。::before 在元素最开始的位置&…

1.BOM-获取元素(获取元素、修改属性)

web Api基本认知 作用:通过JS去操作html页面和浏览器(实现浏览器中的某些功能) 分类: DOM(网页):Document Object Model(文档对象模型) BOM(浏览器):Borwser Object Model(浏览器对象模型) DOM DOM树 将网页中标签的关系以树状…

利用excel批量修改图片文件名

今天同事提出需求要实现利用excel批量修改某文件夹下的图片重命名,衡量到各种条件,最后还是选择了vbs来实现。代码如下 代码 创建Excel对象 Set objExcel CreateObject("Excel.Application") objExcel.Visible False 隐藏Excel窗口 打开Ex…

react:usecontext使用

useContext返回 调用组件上方最近的 SomeContext.Provider 的 value 如果没有这样的 provider 传递给 createContext 的 defaultValue。返回的值始终是最新的。 如果 context 发生变化&#xff0c;React 会自动重新渲染读取 context 的组件。 <Context.Provider> 需要位于…

【MySQL知识体系】第2章 数据库与表的创建(一)

第2章 数据库与表的创建 2.1 数据库操作 2.2 表操作 文章目录 第2章 数据库与表的创建2.1 数据库操作2.1.1 创建第一个数据库2.1.2 更新数据库名称&#xff08;数据库创建后无法修改名称&#xff09;2.1.3 删除数据库2.1.4 取个合适的数据库名称 第2章 数据库与表的创建 2.1 数…

990-40产品经理:What Is Effective Written Communication? 什么是有效的书面沟通?

The purpose of written communication is to capture your reader’s attention and get your point across clearly. Ultimately, when you communicate in writing, you are helping the reader understand your perspective看法 on a topic. There are certain qualities a…

在 echarts 的 rich 中使用 iconfont 图标库图标作为 backgroundColor.image 值的方法

实现步骤 1、引入 iconfont.js。该脚本执行时&#xff0c;会在 body 下插入一个 svg 标签&#xff0c;标签下包含了图标库中的 svg 图标 path。 <script src"your/iconfont/path/iconfont.js"></script>或者 import your/iconfont/path/iconfont.js2、…

【学习心得】websocket协议简介并与http协议对比

一、轮询和长轮询 在websocket协议出现之前&#xff0c;要想实现服务器和客户端的双向持久通信采取的是Ajax轮询。它的原理是每隔一段时间客户端就给服务器发送请求找服务器要数据。 让我们通过一个生活化的比喻来解释轮询和长轮询假设你正在与一位不怎么主动说话的老大爷&…

基于R语言lavaan的SEM在复杂统计建模中的科研技术新突破

此外&#xff0c;我们还将深入探讨R语言的基础知识、结构方程模型的基本原理、lavaan程序包的使用方法等内容。无论是潜变量分析、复合变量分析&#xff0c;还是非线性/非正态/缺失数据处理、分类变量分析、分组数据处理等复杂问题&#xff0c;我们都将一一为您解析。 希望通过…

3.7作业

网络聊天室&#xff1a; 程序代码&#xff1a; ser.c #include <myhead.h> //定义消息类型结构体 struct xiaoxi {char type;char name[20];char text[100]; };int main(int argc, const char* argv[]) {// 创建套接字int sfd socket(AF_INET, SOCK_STREAM, 0);if (s…

Spring源码:手写AOP

文章目录 一、概念1、AOP是什么&#xff1f;2、相关概念1&#xff09;目标对象Target2&#xff09;通知Advice3&#xff09;连接点Joinpoint4&#xff09;切点Pointcut5&#xff09;切面Aspect6&#xff09;织入Weaving 二、分析三、实现1、实现Advice1&#xff09;前置通知2&a…

蓝桥杯-Stack

Stack实例化步骤 1导包&#xff0c;导入java.util.* 2实例化对象&#xff0c;格式如下 Stack<引用数据类型> stacknew Stack<>(); Stack特点&#xff1a;先进后出。比如1&#xff0c;2&#xff0c;3依次入栈&#xff0c;出栈顺序就是3&#xff0c;2&#xff0c…

企业微信HOOK协议,新设备二次验证处理

提示设备强制二次验证问题已处理 HOOK&#xff1a;https://www.showdoc.com.cn/1663062930779972/7859611259700402密码&#xff1a;999999999

大数据冷热分离方案

数据冷热分离方案 1、背景 ​ 随着业务的发展&#xff0c;在线表中的数据会逐渐增加。常规业务都有冷热数据现象明显的特性&#xff08;需要访问的都是近期产生的热数据&#xff1b;时间久远的冷数据出于备份、备案溯源等诉求会进行在线保留&#xff09;。在业务表数据 量可控…

安卓玩机工具推荐----高通芯片9008端口读写分区 备份分区 恢复分区 制作线刷包 工具操作解析

上期解析了下adb端口备份分区的有关操作 安卓玩机工具推荐----ADB状态读写分区 备份分区 恢复分区 查看分区号 工具操作解析 在以往的博文中对于高通芯片机型的分区读写已经分享了很多。相关类似博文 安卓备份分区----手动查询安卓系统分区信息 导出系统分区的一些基本操作 …

设计模式之构建者模式

构建者模式&#xff08;Builder&#xff09; 定义 将一个复杂对象的构建与其表示分离&#xff0c;使得同样的构建过程可以创建不同的表示 使用场景 主要角色 产品 Product建造者接口 Builder具体的建造者 Concrete Builder指挥者 Director:组织构建过程 示例代码 Data p…

0x04_数组_指针_字符串

数组 数组的定义与使用 数组是具有一定顺序关系的若干相同类型变量的集合体&#xff0c;组成数组的变量称为该数组的元素。 给出下面程序的输出&#xff1a; #include <iostream> using namespace std; int main() {int a[10], b[10];for(int i 0; i < 10; i) {a[…

Redis高可用方案

Redis的高可用架构模式及相关配置命令是构建稳定、可靠Redis环境的关键。以下是一些主要的Redis高可用架构模式及其配置方法&#xff1a; 主从复制&#xff08;Master-Slave&#xff09; 主从复制模式实现了Redis数据的备份和读取操作的负载均衡。在这个模式中&#xff0c;一台…

python 基础知识点(蓝桥杯python科目个人复习计划59)

今日复习内容&#xff1a;做题 例题1&#xff1a;建造房屋 问题描述&#xff1a; 小蓝和小桥是两位年轻的建筑师&#xff0c;他们正在设计一座新的城市。 在这个城市中&#xff0c;有N条街道&#xff0c;每条街道上有M个位置可以建造房屋&#xff08;一个位置只能建造一个房…

迷宫641更优解——蓝桥杯2017

1.优解思路&#xff1a; 秒啊&#xff1a;如果这条路可以走通&#xff0c;则这条路上所有点都可以走通&#xff0c;反之若不可以&#xff0c;则都不可以。 因为比如一个点走了&#xff0c;没走通&#xff0c;这条路上的点都出不去&#xff0c;假如有别的点走路走到这条死路上…