Java生成随机数(random()和Random类)
在 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 类中常用的方法。
方法 | 说明 |
---|---|
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类)相关推荐
- java 生成随机数(利用Random生成任意范围的随机数)
目录 一.为什么需要这种方法? 二.方法思路 1.头尾相减 2.尾巴+1 3.最终的结果加上初始的首个数字 代码 运行结果 一.为什么需要这种方法? Random函数只能限制生成随机数的区间的末尾是多 ...
- Java生成随机数的几种高级用法
转载自 进阶 | Java生成随机数的几种高级用法! 言归正传,众所周知,随机数是任何一种编程语言最基本的特征之一.而生成随机数的基本方式也是相同的:产生一个0到1之间的随机数.看似简单,但有时我们也 ...
- Java生成随机数的4种方式,以后就用它了!
作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 在 Java 中,生成随机数的场景有很多,所以本文我们就来盘点一下 4 种生成随机 ...
- java 生成随机数_Java 生成随机数的 N 种方法
原标题:Java 生成随机数的 N 种方法 www.baeldung.com/java-generating-random-numbers 1.引言 本文将探讨用 Java 生成随机数的不同方法. 2 ...
- Java 生成随机数的 N 种方法
(给ImportNew加星标,提高Java技能) 编译:ImportNew/覃佑桦 www.baeldung.com/java-generating-random-numbers 1.引言 本文将探讨 ...
- java 生成随机数_不会生成随机数?我们来看看java生成随机数的10种方法
1.引言 本文将探讨用 Java 生成随机数的不同方法. 2.Java API Java API 提供了几种随机数生成方法.让我们一起来了解一下. 2.1.java.lang.Math Math 类中 ...
- Java生成随机数的方式
目录 Random 基础使用 优缺点分析 SecureRandom 基础使用 总结: 持续更新 Random Random 类诞生于 JDK 1.0,它产生的随机数是伪随机数,也就是有规则的随机数.R ...
- 分享一个Java生成二维码工具类
分享一个Java生成二维码工具类 直接上代码: 1.CodeUtil.class package top.lrshuai.blog.util;import java.awt.BasicStroke; ...
- java生成随机数random_Java获取随机数Random
随机数在实际中使用很广泛,比如要随即生成一个固定长度的字符串.数字.或者随即生成一个不定长度的数字.或者进行一个模拟的随机选择等等.Java提供了最基本的工具,可以帮助开发者来实现这一切. 一.Jav ...
最新文章
- 一次gitlab无法使用ssh登录的问题解决
- Kong APIGW — Plugins — Traffic Control
- OpenCV图像处理——深度学习样本制造
- js面向对象与PHP面向对象总结
- 数字化改革看“浙”里 CDEC2021中国数字智能生态大会杭州站举行
- mongodb的架构 副本集搭建
- Cmake构建_设置debug与release输出路径
- 微信小商店的选型参考及感想
- vb 运行错误429 mysql_运行时错误429 ActiveX部件不能创建对象的终极解决方法
- SNDA校园招聘,参加哈尔滨和西安的面试
- Normalize.css简书
- NRF52832程序烧录失败原因
- 大家好!我是刘伦斯,一个喜欢书法、摄影的计算机童鞋
- 【矩阵论】矩阵的相似标准型(3)
- matlab三相异步电动机仿真,三相异步电动机的MATLAB仿真研究
- URL 的参数(query)是什么,以及如何解析获取
- Colmap论文——《Structure-from-Motion Revisited》论文阅读笔记
- phalapi可以依赖注入么_[7.8]-phalapi-进阶篇2(DI依赖注入和单例模式) | PhalApi(π框架) - PHP轻量级开源接口框架...
- 笔记本触摸板没反应怎么回事?笔记本触控板失灵解决办法
- Python制做动态图
热门文章
- Google 最新的性能优化方案,LCP 提升30%!
- L29.linux命令每日一练 -- 第四章 文本处理三剑客 -- sed命令
- xp计算机考试资源管理,【2017年职称计算机考试WindowsXP考点利用资源管理器模式】- 环球网校...
- 120个huo源地址,快来收藏!
- android ScheduledExecutorService定时器的使用
- 「GoTeam 招聘时间」蜀力行 Golang 高级开发工程师(成都)
- 如何直接在电子文档上签名?
- 从《我的团长我的团》看企业的团队打造(一)
- hightcharts制作饼状图
- addslashes 和 stripslashes