文章目录

  • 前言
  • 一、System.currentTimeMillis() 方法
    • 1.1、System.currentTimeMillis() 方法原理剖析
    • 1.2、实现随机数加法程序
  • 二、Math.random() 方法
    • 2.1、Math.random() 方法原理剖析
    • 2.2、实现随机数减法程序
  • 总结

前言

在 Java 中提供了很多的方法能够产生随机数,在本文中将持续进行总结相应的方法和应用,对于初学者来说较为友好,同时附了简单的案例供大家参考。


一、System.currentTimeMillis() 方法

1.1、System.currentTimeMillis() 方法原理剖析

根据 API 的介绍,调用 System.currentTimeMillis() 方法我们可以获取 1970 年 1 月 1 日午夜到现在的毫秒数(例如:1203183086328 毫秒)。

我们可以通过取余的方式得到其最后一位的整数,代码如下:

int number1 = (int)(System.currentTimeMillis() % 10);

1.2、实现随机数加法程序

利用 System.currentTimeMillis() 方法实现通过程序产生随机数让一年级学生练习加法,例题如下。

程序随机产生两个一位整数,number1 和 number2,然后显示“What is 1 + 7?”

实现代码如下:

package program3_1;import java.util.Scanner;public class AdditionQuiz {public static void main(String[] args) {int number1 = (int)(System.currentTimeMillis() % 10);int number2 = (int)(System.currentTimeMillis() / 7 % 10);Scanner input = new Scanner(System.in);System.out.print("What is " + number1 + " + " + number2 + " ?");int answer = input.nextInt();System.out.println(number1 + " + " + number2 + " = " + answer + " is " + (number1 + number2 == answer));}
}

实现具体如下图所示:


二、Math.random() 方法

2.1、Math.random() 方法原理剖析

使用 Math.random() 来获得一个 0.0 到 1.0 之间的随机 double 值,不包括 1.0

通过 (int)(Math.random() * 10) 会返回一个随机的一位整数(即 0 到 9 之间的数),代码如下:

int number1 = (int)(Math.random() * 10);

2.2、实现随机数减法程序

利用 Math.random() 方法实现一个让一年级学生练习减法的程序,例题如下。

程序随机产生两个一位整数 number1 和 number2,且满足 number >= number2。显示问题:“What is 9 - 2 ?”学生输入答案后,显示消息判断是否正确。

实现代码如下:

package com.bailu.test;import java.util.Scanner;public class AdditionQuiz {public static void main(String[] args) {int number1 = (int) (Math.random() * 10);int number2 = (int) (Math.random() * 10);if (number2 > number1) {int temp = number1;number1 = number2;number2 = temp;}System.out.print("What is " + number1 + " - " + number2 + " ? ");Scanner input = new Scanner(System.in);int answer = input.nextInt();input.close();if (number1 - number2 == answer) {System.out.println("You are right!");} else {System.out.println("You are wrong!");System.out.println(number1 + " - " + number2 + " = " + (number1 - number2));}}
}

实现具体如下图所示:



总结

本文给大家介绍了两种产生随机数的方法,这是最简单的两种。日后有机会我还会继续补充更多的方法,另外大家还有什么方法呢?补充到下面吧!


我是白鹿,一个不懈奋斗的程序猿。望本文能对你有所裨益,欢迎大家的一键三连!若有其他问题、建议或者补充可以留言在文章下方,感谢大家的支持!

Java 产生随机数:Java 中产生随机数的方法及应用汇总相关推荐

  1. java 随机数生成实现_Java中生成随机数的实现方法总结

    搜索热词 在实际开发工作中经常需要用到随机数.如有些系统中创建用户后会给用户一个随机的初始化密码.这个密码由于是随机的,为此往往只有用户自己知道.他们获取了这个随机密码之后,需要马上去系统中更改.这就 ...

  2. java安全的随机数_Java中的随机数与安全随机数

    Java提供了两个用于生成随机数的类-SecureRandom.java和Random.java.随机数通常可用于Web服务器上的加密键或会话键或简单地用作密码.SecureRandom在java.s ...

  3. java如何重写_java中如何重写一个方法

    方法的重写: 1.在子类中可以根据需要对从基类中继承来的方法进行重写. 2.重写的方法和被重写的方法必须具有相同方法名称.参数列表和返回类型. 3.重写方法不能使用比被重写的方法更严格的访问权限. 在 ...

  4. java同步关键字_Java中synchronized关键字修饰方法同步的用法详解

    Java的最基本的同步方式,即使用synchronized关键字来控制一个方法的并发访问. 每一个用synchronized关键字声明的方法都是临界区.在Java中,同一个对象的临界区,在同一时间只有 ...

  5. java.equal例子_Java中的== 和equals()方法详解与实例

    Java中的== 和equals()方法: Java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型. byte,short,char,int,long,float,double,boo ...

  6. java securerandom使用_Java中的SecureRandom nextBytes()方法

    用户指定的随机字节数可以使用nextBytes()类java.security.SecureRandom中的方法获得.该方法需要一个参数,即一个随机字节数组,它返回用户指定的随机字节. 演示此的程序如 ...

  7. java wait 参数_java中wait()和join()方法的区别是什么

    java中wait()和join()方法的区别是:存在不同的java包中:wait()方法用于线程间通信,它所施加的等待状态的线程可以被启动:join()方法用于在多个线程之间添加排序,它所施加的等待 ...

  8. java foreach顺序_Java中的LongStream forEachOrdered()方法

    forEachOrdered()Java中的方法对此流的每个元素执行一个操作,以确保对具有定义的遇到顺序的流按遇到顺序处理每个元素. 语法如下-void forEachOrdered(LongCons ...

  9. python 随机数_Python中的随机数

    Python定义了一组用于生成或操纵随机数的函数.这种特殊类型的功能用于许多游戏,彩票或需要随机数生成的任何应用程序中. 随机数运算: 1.choice():此函数用于从容器生成1个随机数. 2.ra ...

  10. java 结束循环_java中结束循环的方法

    java中结束循环的方法 发布时间:2020-06-25 11:31:06 来源:亿速云 阅读:180 作者:Leah 这篇文章将为大家详细讲解有关java中结束循环的方法,小编觉得挺实用的,因此分享 ...

最新文章

  1. tomcat:Could not publish to the server. java.lang.IndexOutOfBoundsException
  2. 非支配排序遗传算法2(NSGA-II)
  3. 笔记-项目质量管理-6σ管理法
  4. 云信小课堂|如何实现音视频通话
  5. python爬虫ip限制_简单爬虫,突破IP访问限制和复杂验证码,小总结
  6. java 复写hashcode_java 重写equals()和hashCode()
  7. 矩池云上编译安装dlib库
  8. eclipse配置glassfish、将一个WEB项目部署到glassfigh
  9. C++ mutable 的用法
  10. C++总结学习(一)
  11. 请问投稿中要求上传的author_SCI投稿状态解析
  12. 丰县哪里有学计算机,江苏丰县中等专业学校2021年有哪些专业
  13. 计算机英语摘要,计算机专业英语摘要.ppt
  14. PMP 第十三章项目干系人管理
  15. 共享汽车数据分析调研案例报告
  16. 重要公告|Moonriver成功续约Kusama平行链插槽租赁期
  17. 《Windows 8 权威指南》——第2章 Windows 8 Metro应用 2.1 打造快速流畅的动态Windows 8 Metro应用体验...
  18. 关于谷歌浏览器加载不显示验证码的解决办法
  19. 相比高人气的 Rust、Go,为何 Java、C 在工具层面进展缓慢?
  20. Nginx 訪问日志增长暴增出现尖刀的具体分析

热门文章

  1. access数据库文件导入mysql数据库文件怎么打开,Access数据库从外部数据导入文本文件和VF数据库-dbf文件怎么打开...
  2. openoffice转化太慢且不能多线程_专访橙光卿蓝蓝:多线程IP如何赢在起跑线?丨制鲜者IP作者...
  3. matlab中patch命令_matlab中patch函数的用法——emily
  4. python如何改变数据类型_如何改变numpy数组的数据类型和形状?
  5. java 队列_百战程序员:Java并发阻塞队列
  6. 12v小型电机型号大全_电动机型号参数大全,再也不怕看不懂电机型号了
  7. IntelliJ IDEA 2019 安装lombok
  8. MyBatisPlus_删除篇_入门试炼_04
  9. html-iframe内联框架
  10. 酷睿i7cpu适合的linux,CPU性能篇 - Core i7-4770K Linux之旅:有喜有忧_Linux新闻_Linux公社-Linux系统门户网站...