「Java」随机数详解_java中随机数语句的规则

createh54个月前 (03-01)技术教程25

在我们的Java课程中通过游戏案例,我们通过随机数来对每次的攻击伤害值进行了一个赋值,那么Java中还有哪些方法可以产生随机数呢?

Java中产生随机数的几种方式,随机数的概念从广义上讲,有三种:

1、通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字。

【PS:这个方法返回一个从1970年1月1号0点0分0秒到目前的一个毫秒数,返回类型是long,我们可以拿它作为一个随机数,拿它对一些数取模,就可以得到我们想要的一些范围内随机数】

2、通过Math.random()返回一个0到1之间的double值。

【PS:这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的倍数来得到想要的效果,比如说乘以10,他就是个10以内的随机数】

3、通过Random类来产生一个随机数,这个是专业的Random工具类,功能强大。

【PS:我们可以通过新建一个Random的对象来产生随机数,他可以产生随机整数、float、double、long型随机数】

因为方法3是我们日常项目中比较常用的一种,也是使用范围比较广的一种,所以我们这里重点讲讲第三种方法Random类来产生一个随机数。

java.util.Random类有两种构建方式:带种子和不带种子 。

不带种子


这种方式将会返回随机的数字,每次运行结果不一样:



输出结果是:



带种子


无论程序运行多少次,返回结果都是一样的【老九君亲测有效】:


输出结果,两次结果均相同,重复运行也均是同样的结果:



两种方式的差别在于?

我们先来看看API怎么说:

Random()

创建一个新的随机数生成器。

Random(long seed)

使用单个 long 种子创建一个新随机数生成器: public Random(long seed) { setSeed(seed); } next 方法使用它来保存随机数生成器的状态。


通俗说,两者的区别是:

带种子的,每次运行生成的结果都是一样的。如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。

不带种子的,每次运行生成的都是随机的,没有规律可言。

创建不带种子的Random对象:

Random random = new Random();

创建不带种子的Random对象有两种方法:

1) Random random = new Random(555L);

2) Random random = new Random();

random.setSeed(555L);


Random对象的nextInt(),nextInt(int n)方法的说明:

1.int nextInt():

返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的int值。

2.int nextInt(int n):

返回一个伪随机数,它是从此随机数生成器的序列中取出的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。 如下所示ran.nextInt(10):


打印结果如下,生成了0~9之间的随机整数:



需要更多学习笔记干货的小伙伴、欢迎关注公众号【老九学堂】(づ ̄3 ̄)づ╭?~

相关文章

Thread.onSpinWait()有什么作用?为什么要睡眠0毫秒?

概述今天在整理之前学习资料时,偶然看见之前自己写的demo:public class MyTest { static volatile boolean temp = true; pu...

Java中获取和处理系统时间的最佳实践

Java中获取和处理系统时间的最佳实践引言在现代软件开发中,时间的处理是一个至关重要的环节。无论是记录日志、生成唯一标识符还是处理并发操作,准确的时间信息都是不可或缺的。Java 提供了多种方式来获取...

全网最全!彻底弄透Java处理GMT/UTC日期时间

作者丨BAT的乌托邦正文平时工作中遇到时间如何处理?用Date还是JDK 8之后的日期时间API?如何解决跨时区转换等等头大问题。A哥向来管生管养,管杀管埋,因此本文就带你领略一下,Java是如何实现...

Java时间相关_java 时间操作

一、Java 8 以前日期API相关问题Java 8 以前,java.util.Date,java.util.Calendar,java.util.GregoiranCalendar,java.tex...

Java与人工智能:从入门到精通_java转人工智能好转么

Java与人工智能:从入门到精通引言在当今数字化时代,人工智能(AI)已经成为推动技术进步的重要力量。Java作为一种广泛使用的编程语言,以其平台无关性、强大的库支持和丰富的生态系统,在人工智能领域中...

Java并发编程实战:全面指南_java并发编程深度解析

Java并发编程实战:全面指南引言Java并发编程是现代软件开发中不可或缺的一部分,尤其是在处理高并发请求、大规模数据处理和实时系统时。随着多核处理器的普及,充分利用CPU资源成为了提升应用程序性能的...