【老九】【Java】随机数详解
在我们的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之间的随机整数:
遇到问题,可加老九君个人QQ:614940318,请备注来自CSDN
老九学堂免费C、C++、Java课程地址: https://study.163.com/courses-search?keyword=老九学堂
徐老师线下全栈就业班开始报名啦~
零基础开讲,8个月,Java全栈学习,终身推荐就业
【老九】【Java】随机数详解相关推荐
- Java集合排序及java集合类详解
Java集合排序及java集合类详解 (Collection, List, Set, Map) 摘要内容 集合是Java里面最常用的,也是最重要的一部分.能够用好集合和理解好集合对于做Java程序的开 ...
- 【Java网络编程与IO流】Java之Java Servlet详解
Java网络编程与IO流目录: [Java网络编程与IO流]Java中IO流分为几种?字符流.字节流.缓冲流.输入流.输出流.节点流.处理流 [Java网络编程与IO流]计算机网络常见面试题高频核心考 ...
- Java synchronized详解
Java synchronized详解 第一篇: 使用synchronized 在编写一个类时,如果该类中的代码可能运行于多线程环境下,那么就要考虑同步的问题.在Java中内置了语言级的同步原语--s ...
- Apache Thrift - java开发详解
2019独角兽企业重金招聘Python工程师标准>>> Apache Thrift - java开发详解 博客分类: java 架构 中间件 1.添加依赖 jar <depen ...
- Java泛型详解-史上讲解最详细的,没有之一
目录 1. 概述 2. 一个栗子 3. 特性 4. 泛型的使用 4.1 泛型类 4.2 泛型接口 4.3 泛型通配符 4.4 泛型方法 4.4.1 泛型方法的基本用法 4.4.2 类中的泛型方法 4. ...
- python随机数程序源码_Python 实现随机数详解及实例代码
Python3实现随机数 random是用于生成随机数的,我们可以利用它随机生成数字或者选择字符串. random.seed(x)改变随机数生成器的种子seed. 一般不必特别去设定seed,Pyth ...
- Java虚拟机详解----JVM常见问题总结
[正文] 声明:本文只是做一个总结,有关jvm的详细知识可以参考本人之前的系列文章,尤其是那篇:Java虚拟机详解04----GC算法和种类.那篇文章和本文是面试时的重点. 面试必问关键词:JVM垃圾 ...
- java 泛型详解、Java中的泛型方法、 java泛型详解
本文参考java 泛型详解.Java中的泛型方法. java泛型详解 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用. 什么是泛型?为什么要使用泛型? 泛型,即& ...
- 最详细的java泛型详解
来源:最详细的java泛型详解 对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下. 本文参考java 泛型详解.Java中的泛型方法. ja ...
- Java异常详解及如何处理
来源:Java异常详解及如何处理 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言 ...
最新文章
- showModalDialog和showModelessDialog使用心得
- Kali Linux 2020.1安装桌面
- 动态规划之矩阵连乘讲解
- HTML+CSS公司培训(一)高手请飘过
- 20162329 张旭升 2017 - 2018 《程序设计与数据结构》第五周总结
- OSPF passive-interface
- python3+telnetlib实现简单自动测试
- 计算数组和以及平均值
- poj2373 Dividing the Path (单调队列+dp)
- WPS Office 11.5.5 for Android 8848钛金
- 穿衣助手 张凯:电商产品经理的成长之路
- Kali Linux 如何使用 软件商店
- python将十进制转换二进制_python进制转换:十进制转二进制的用法
- 【机器学习详解】KNN分类的概念、误差率及其问题
- 军哥独家QCIE(囊括CCIE和HCIEv3.0)的全新课程。请大家参阅
- 《Hadoop》之踽踽独行(一)大数据概述
- 模式识别-从贝叶斯决策理论看模式分类
- Axure动态面板使用,简单的交互
- 成都拓嘉辰丰:拼多多关键词搜不到自家商品怎么回事?
- 能攻破所有安卓设备 最强Root工具诞生 万能一键Root