Java生成随机数(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 偶数的功能。具体代码如下:
由于 m+(int)(Math.random()*n) 语句可以获取 m~m+n 的随机数,所以 2+(int)(Math. random()*(102-2)) 表达式可以求出 2~100 的随机数。在产生这个区间的随机数后还需要判断是否为偶数,这里使用了对 2 取余数,如果余数不是零,说明随机数是奇数,此时将随机数加 1 后再输出。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));
}
}
}
该程序的运行结果如下:
随机数是:20
- 随机文章
- 安丘 马尔代夫(安丘旅游集团计划在马尔代夫建设度假村)
- 中国 马尔代夫 男足(中马男足友谊赛再次携手,强化双边关系)
- 公务护照马尔代夫(马尔代夫开放公务护照办理,方便出行)
- 参加马尔代夫婚礼(浪漫梦幻!在马尔代夫举办的完美婚礼)
- 吉林江南马尔代夫(吉林南部一处形如马尔代夫的美丽风光)
- 北方马尔代夫别墅(北海马尔代夫别墅:浪漫沙滩度假胜地)
- 佳少 马尔代夫(美少女游马尔代夫)
- 婚纱视频马尔代夫(梦幻岛屿婚礼,马尔代夫瑰丽婚纱视频)
- 去马尔代夫莉莉岛(马尔代夫梦幻度假胜地莉莉岛等你来!)
- 国旅 马尔代夫(国旅推出马尔代夫旅游计划)
- 刘翔 马尔代夫(刘翔训练计划在马尔代夫实施)
- 去马尔代夫过冬吧(过冬首选!马尔代夫度假胜地等你来!)
- 昆明马尔代夫转机(昆明转机前往马尔代夫,开启梦幻旅程)
- 潍坊马尔代夫门票(潍坊马尔代夫景区门票价格及购买攻略)
- 沐阳马尔代夫视频(沐阳分享马尔代夫度假视频,美不胜收)
- 深圳马尔代夫美食(《探秘深圳一家马尔代夫餐厅的美食》)
- 河西马尔代夫规划(河西区规划马尔代夫生态旅游资源开发)
- 理想中的马尔代夫(如梦境般的天堂——理想中的马尔代夫)
- 哪里就有马尔代夫(探索马尔代夫:梦幻度假胜地在哪里?)
- 奥静 马尔代夫(奥静度假村:浪漫马尔代夫的完美之选)
- 陵水马尔代夫酒店(陵水半岛的奢华马尔代夫岛屿风光无限)
- 马尔代夫介绍小说(纯爱狂热!马尔代夫小说展现热带浪漫)
- 沧州马尔代夫地址(沧州有一个马尔代夫,这就是它的地址)
- 阳光旅行马尔代夫(体验马尔代夫之旅,领略绝美阳光沙滩)
- 郴州马尔代夫电话(郴州旅行社提供马尔代夫旅游预定服务)
- 马尔代夫云游攻略(马尔代夫旅游攻略:畅享云端岛屿之旅)
- 马尔代夫倒水最火(马尔代夫最新网红打卡点——倒水奇观)
- 青岛隐藏马尔代夫(青岛零距离体验天堂般的马尔代夫风光)
- 马尔代夫入境表格(马尔代夫旅游入境需填写入境申请表格)
- 马尔代夫十大景点(马尔代夫十大景点,惊叹您的度假之旅)
