在我们的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】随机数详解相关推荐

  1. Java集合排序及java集合类详解

    Java集合排序及java集合类详解 (Collection, List, Set, Map) 摘要内容 集合是Java里面最常用的,也是最重要的一部分.能够用好集合和理解好集合对于做Java程序的开 ...

  2. 【Java网络编程与IO流】Java之Java Servlet详解

    Java网络编程与IO流目录: [Java网络编程与IO流]Java中IO流分为几种?字符流.字节流.缓冲流.输入流.输出流.节点流.处理流 [Java网络编程与IO流]计算机网络常见面试题高频核心考 ...

  3. Java synchronized详解

    Java synchronized详解 第一篇: 使用synchronized 在编写一个类时,如果该类中的代码可能运行于多线程环境下,那么就要考虑同步的问题.在Java中内置了语言级的同步原语--s ...

  4. Apache Thrift - java开发详解

    2019独角兽企业重金招聘Python工程师标准>>> Apache Thrift - java开发详解 博客分类: java 架构 中间件 1.添加依赖 jar <depen ...

  5. Java泛型详解-史上讲解最详细的,没有之一

    目录 1. 概述 2. 一个栗子 3. 特性 4. 泛型的使用 4.1 泛型类 4.2 泛型接口 4.3 泛型通配符 4.4 泛型方法 4.4.1 泛型方法的基本用法 4.4.2 类中的泛型方法 4. ...

  6. python随机数程序源码_Python 实现随机数详解及实例代码

    Python3实现随机数 random是用于生成随机数的,我们可以利用它随机生成数字或者选择字符串. random.seed(x)改变随机数生成器的种子seed. 一般不必特别去设定seed,Pyth ...

  7. Java虚拟机详解----JVM常见问题总结

    [正文] 声明:本文只是做一个总结,有关jvm的详细知识可以参考本人之前的系列文章,尤其是那篇:Java虚拟机详解04----GC算法和种类.那篇文章和本文是面试时的重点. 面试必问关键词:JVM垃圾 ...

  8. java 泛型详解、Java中的泛型方法、 java泛型详解

    本文参考java 泛型详解.Java中的泛型方法. java泛型详解 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用. 什么是泛型?为什么要使用泛型? 泛型,即& ...

  9. 最详细的java泛型详解

    来源:最详细的java泛型详解 对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下. 本文参考java 泛型详解.Java中的泛型方法. ja ...

  10. Java异常详解及如何处理

    来源:Java异常详解及如何处理 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言 ...

最新文章

  1. showModalDialog和showModelessDialog使用心得
  2. Kali Linux 2020.1安装桌面
  3. 动态规划之矩阵连乘讲解
  4. HTML+CSS公司培训(一)高手请飘过
  5. 20162329 张旭升 2017 - 2018 《程序设计与数据结构》第五周总结
  6. OSPF passive-interface
  7. python3+telnetlib实现简单自动测试
  8. 计算数组和以及平均值
  9. poj2373 Dividing the Path (单调队列+dp)
  10. WPS Office 11.5.5 for Android 8848钛金
  11. 穿衣助手 张凯:电商产品经理的成长之路
  12. Kali Linux 如何使用 软件商店
  13. python将十进制转换二进制_python进制转换:十进制转二进制的用法
  14. 【机器学习详解】KNN分类的概念、误差率及其问题
  15. 军哥独家QCIE(囊括CCIE和HCIEv3.0)的全新课程。请大家参阅
  16. 《Hadoop》之踽踽独行(一)大数据概述
  17. 模式识别-从贝叶斯决策理论看模式分类
  18. Axure动态面板使用,简单的交互
  19. 成都拓嘉辰丰:拼多多关键词搜不到自家商品怎么回事?
  20. 能攻破所有安卓设备 最强Root工具诞生 万能一键Root

热门文章

  1. 根据程序流程图化程序流图_程序流程图有什么用?简单实用的流程图模板大全...
  2. C++游戏《Flappy bird》
  3. Mac 平台下功能强大的Shimo软件使用指南
  4. python脚本爬取今日百度热点新闻
  5. xml 处理大于号与小于号
  6. DH坐标系的建立与DH表—机器人学
  7. 教你写简单的黑客程序
  8. iOS平台游戏安全之IPA破解原理及防御
  9. 高通apq8074修改DDR频率
  10. Redis开启远程访问