怎样⽤Java⽣成随机数?
在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 类中常⽤的⽅法。
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()返回⼀个随机长整型数字
java生成随机数的方法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学习视频:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论