在 Java 中要生成一个指定范围之内的随机数字有两种方法:一种是调用 Math 类的 random() 方法,一种是使用 Random 类。

Random 类提供了丰富的随机数生成方法,可以产生 boolean、int、long、float、byte 数组以及 double 类型的随机数,这是它与 random() 方法最大的不同之处。

random() 方法只能产生 double 类型的 0~1 的随机数。

Random 类位于 java.util 包中,该类常用的有如下两个构造方法。

  • Random():该构造方法使用一个和当前系统时间对应的数字作为种子数,然后使用这个种子数构造 Random 对象。
  • Random(long seed):使用单个 long 类型的参数创建一个新的随机数生成器。

Random 类提供的所有方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的概率是均等的,在表 1 中列出了 Random 类中常用的方法。

表 1 Random 类的常用方法
方法 说明
boolean nextBoolean() 生成一个随机的 boolean 值,生成 true 和 false 的值概率相等
double nextDouble() 生成一个随机的 double 值,数值介于 [0,1.0),含 0 而不包含 1.0
int nextlnt() 生成一个随机的 int 值,该值介于 int 的区间,也就是 -231~231-1。如果
需要生成指定区间的 int 值,则需要进行一定的数学变换
int nextlnt(int n) 生成一个随机的 int 值,该值介于 [0,n),包含 0 而不包含 n。如果想生成
指定区间的 int 值,也需要进行一定的数学变换
void setSeed(long seed) 重新设置 Random 对象中的种子数。设置完种子数以后的 Random 对象
和相同种子数使用 new 关键字创建出的 Random 对象相同
long nextLong() 返回一个随机长整型数字
boolean nextBoolean() 返回一个随机布尔型值
float nextFloat() 返回一个随机浮点型数字
double nextDouble() 返回一个随机双精度值

例 1

下面编写一个 Java 程序,演示如何使用 Random 类提供的方法来生成随机数。具体代码如下:

import java.util.Random;
public class Test06 {public static void main(String[] args) {Random r = new Random();double d1 = r.nextDouble(); // 生成[0,1.0]区间的小数double d2 = r.nextDouble() * 7; // 生成[0,7.0]区间的小数int i1 = r.nextInt(10); // 生成[0,10]区间的整数int i2 = r.nextInt(18) - 3; // 生成[-3,15)区间的整数long l1 = r.nextLong(); // 生成一个随机长整型值boolean b1 = r.nextBoolean(); // 生成一个随机布尔型值float f1 = r.nextFloat(); // 生成一个随机浮点型值System.out.println("生成的[0,1.0]区间的小数是:" + d1);System.out.println("生成的[0,7.0]区间的小数是:" + d2);System.out.println("生成的[0,10]区间的整数是:" + i1);System.out.println("生成的[-3,15]区间的整数是:" + i2);System.out.println("生成一个随机长整型值:" + l1);System.out.println("生成一个随机布尔型值:" + b1);System.out.println("生成一个随机浮点型值:" + f1);System.out.print("下期七星彩开奖号码预测:");for (int i = 1; i < 8; i++) {int num = r.nextInt(9); // 生成[0,9]区间的整数System.out.print(num);}}
}

本实例每次运行时结果都不相同,这就实现了随机产生数据的功能。该程序的运行结果如下:

生成的[0,1.0]区间的小数是:0.8773165855918825
生成的[0,7.0]区间的小数是:6.407083074782282
生成的[0,10]区间的整数是:5
生成的[-3,15]区间的整数是:4
生成一个随机长整型值:-8462847591661221914
生成一个随机布尔型值:false
生成一个随机浮点型值:0.6397003
下期七星彩开奖号码预测:0227168

例 2

Math 类的 random() 方法没有参数,它默认会返回大于等于 0.0、小于 1.0 的 double 类型随机数,即 0<=随机数<1.0。对 random() 方法返回的数字稍加处理,即可实现产生任意范围随机数的功能。

下面使用 random() 方法实现随机生成一个 2~100 偶数的功能。具体代码如下:

public class Test07 {public static void main(String[] args) {int min = 2; // 定义随机数的最小值int max = 102; // 定义随机数的最大值// 产生一个2~100的数int s = (int) min + (int) (Math.random() * (max - min));if (s % 2 == 0) {// 如果是偶数就输出System.out.println("随机数是:" + s);} else {// 如果是奇数就加1后输出System.out.println("随机数是:" + (s + 1));}}
}

由于 m+(int)(Math.random()*n) 语句可以获取 m~m+n 的随机数,所以 2+(int)(Math. random()*(102-2)) 表达式可以求出 2~100 的随机数。在产生这个区间的随机数后还需要判断是否为偶数,这里使用了对 2 取余数,如果余数不是零,说明随机数是奇数,此时将随机数加 1 后再输出。

该程序的运行结果如下:

随机数是:20

Java入门基础视频教程,java零基础自学就选黑马程序员Java入门教程(含Java项目和Java真题)

Java生成随机数(random()和Random类)相关推荐

  1. java 生成随机数(利用Random生成任意范围的随机数)

    目录 一.为什么需要这种方法? 二.方法思路 1.头尾相减 2.尾巴+1 3.最终的结果加上初始的首个数字 代码 运行结果 一.为什么需要这种方法? Random函数只能限制生成随机数的区间的末尾是多 ...

  2. Java生成随机数的几种高级用法

    转载自 进阶 | Java生成随机数的几种高级用法! 言归正传,众所周知,随机数是任何一种编程语言最基本的特征之一.而生成随机数的基本方式也是相同的:产生一个0到1之间的随机数.看似简单,但有时我们也 ...

  3. Java生成随机数的4种方式,以后就用它了!

    作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 在 Java 中,生成随机数的场景有很多,所以本文我们就来盘点一下 4 种生成随机 ...

  4. java 生成随机数_Java 生成随机数的 N 种方法

    原标题:Java 生成随机数的 N 种方法 www.baeldung.com/java-generating-random-numbers 1.引言 本文将探讨用 Java 生成随机数的不同方法. 2 ...

  5. Java 生成随机数的 N 种方法

    (给ImportNew加星标,提高Java技能) 编译:ImportNew/覃佑桦 www.baeldung.com/java-generating-random-numbers 1.引言 本文将探讨 ...

  6. java 生成随机数_不会生成随机数?我们来看看java生成随机数的10种方法

    1.引言 本文将探讨用 Java 生成随机数的不同方法. 2.Java API Java API 提供了几种随机数生成方法.让我们一起来了解一下. 2.1.java.lang.Math Math 类中 ...

  7. Java生成随机数的方式

    目录 Random 基础使用 优缺点分析 SecureRandom 基础使用 总结: 持续更新 Random Random 类诞生于 JDK 1.0,它产生的随机数是伪随机数,也就是有规则的随机数.R ...

  8. 分享一个Java生成二维码工具类

    分享一个Java生成二维码工具类 直接上代码: 1.CodeUtil.class package top.lrshuai.blog.util;import java.awt.BasicStroke; ...

  9. java生成随机数random_Java获取随机数Random

    随机数在实际中使用很广泛,比如要随即生成一个固定长度的字符串.数字.或者随即生成一个不定长度的数字.或者进行一个模拟的随机选择等等.Java提供了最基本的工具,可以帮助开发者来实现这一切. 一.Jav ...

最新文章

  1. 一次gitlab无法使用ssh登录的问题解决
  2. Kong APIGW — Plugins — Traffic Control
  3. OpenCV图像处理——深度学习样本制造
  4. js面向对象与PHP面向对象总结
  5. 数字化改革看“浙”里 CDEC2021中国数字智能生态大会杭州站举行
  6. mongodb的架构 副本集搭建
  7. Cmake构建_设置debug与release输出路径
  8. 微信小商店的选型参考及感想
  9. vb 运行错误429 mysql_运行时错误429 ActiveX部件不能创建对象的终极解决方法
  10. SNDA校园招聘,参加哈尔滨和西安的面试
  11. Normalize.css简书
  12. NRF52832程序烧录失败原因
  13. 大家好!我是刘伦斯,一个喜欢书法、摄影的计算机童鞋
  14. 【矩阵论】矩阵的相似标准型(3)
  15. matlab三相异步电动机仿真,三相异步电动机的MATLAB仿真研究
  16. URL 的参数(query)是什么,以及如何解析获取
  17. Colmap论文——《Structure-from-Motion Revisited》论文阅读笔记
  18. phalapi可以依赖注入么_[7.8]-phalapi-进阶篇2(DI依赖注入和单例模式) | PhalApi(π框架) - PHP轻量级开源接口框架...
  19. 笔记本触摸板没反应怎么回事?笔记本触控板失灵解决办法
  20. Python制做动态图

热门文章

  1. Google 最新的性能优化方案,LCP 提升30%!
  2. L29.linux命令每日一练 -- 第四章 文本处理三剑客 -- sed命令
  3. xp计算机考试资源管理,【2017年职称计算机考试WindowsXP考点利用资源管理器模式】- 环球网校...
  4. 120个huo源地址,快来收藏!
  5. android ScheduledExecutorService定时器的使用
  6. 「GoTeam 招聘时间」蜀力行 Golang 高级开发工程师(成都)
  7. 如何直接在电子文档上签名?
  8. 从《我的团长我的团》看企业的团队打造(一)
  9. hightcharts制作饼状图
  10. addslashes 和 stripslashes