Java生成随机数(利用Random类和Math.random()方法)
Random 类(java.util.Random)
常用构造方法:
Random() :该构造方法使用一个和当前系统时间对应的数字作为种子数,然后使用这个种子数构造 Random 对象。 - Random(long seed) :使用单个 long 类型的参数创建一个新的随机数生成器。
Random 类提供的所有方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的概率是均等的。
使用:
boolean nextBoolean() 生成一个随机的 boolean 值,生成 true 和 false 的值概率相等 Random r = new Random();
System.out.println(r.nextBoolean());
double nextDouble() 生成一个随机的 double 值,数值介于
[
0
,
1.0
)
[0,1.0)
[0,1.0),含 0 而不包含 1.0。 Random r = new Random();
System.out.println(r.nextDouble());
如果要生成
[
0
,
n
)
[0,n)
[0,n)之间的随机双精度浮点数,则给r.nextDouble() 乘以
n
n
n即可。 Random r = new Random();
System.out.println(r.nextDouble() * 10);
int nextlnt() 生成一个随机的 int 值,该值介于 int 的区间,也就是
?
2
31
-2^{31}
?231~
2
31
?
1
2^{31}-1
231?1。如果 需要生成指定区间的 int 值,则需要进行一定的数学变换。 Random r = new Random();
System.out.println(r.nextInt());
int nextlnt(int n) 生成一个随机的 int 值,该值介于 [0,n),包含 0 而不包含 n。 Random r = new Random();
System.out.println(r.nextInt(2));
void setSeed(long seed) 重新设置 Random 对象中的种子数。设置完种子数以后的 Random 对象和相同种子数使用 new 关键字创建出的 Random 对象相同.long nextLong() 返回一个随机长整型数字
Math 类的 random()
Math 类的 random() 方法没有参数,它默认会返回大于等于 0.0、小于 1.0 的 double 类型随机数,即 0<=随机数<1.0。对 random() 方法返回的数字稍加处理,即可实现产生任意范围随机数的功能。
下面使用 random() 方法实现随机生成一个 -100~100 偶数的功能。具体代码如下:
public class Main {
public static void main(String[] args) {
int min = -100;
int max = 100;
int s = min + (int)(Math.random() * (max - min));
System.out.println(s);
}
}
由于 m+(int)(Math.random()*n) 语句可以获取
m
m
m~
m
+
n
m+n
m+n 的随机数,所以 -100+(int)(Math. random()*(100-(-100)) 表达式可以求出 -100~100 的随机数。
|