在Java中我们可以使用java.util.Random
类来产生一个随机数发生器。它有两种形式的构造函数,分别是Random()
和Random(long seed)
。Random()使用当前时间即System.currentTimeMillis()
作为发生器的种子,Random(long seed)使用指定的seed作为发生器的种子。
随机数发生器(Random)对象产生以后,通过调用不同的method:nextInt()、nextLong()、nextFloat()、nextDouble()等获得不同类型随机数。
1、生成随机数
Random random = new Random();
Random random = new Random(100);//指定种子数100
random调用不同的方法,获得随机数。
如果2个Random对象使用相同的种子(比如都是100),并且以相同的顺序调用相同的函数,那它们返回值完全相同。如下面代码中两个Random对象的输出完全相同:
import java.util.Random;
public class RandomOne {
public static void main(String[] args) {
Random random1 = new Random(100);
System.out.println(random1.nextInt());
System.out.println(random1.nextFloat());
System.out.println(random1.nextBoolean());
Random random2 = new Random(100);
System.out.println(random2.nextInt());
System.out.println(random2.nextFloat());
System.out.println(random2.nextBoolean());
}
}
输出结果如下:
-1193959466
0.7346627
false
-1193959466
0.7346627
false
2、指定范围内的随机数
随机数控制在某个范围内,使用模数运算符%
import java.util.Random;
public class RandowTwo {
public static void main(String[] args) {
Random random = new Random();
for (int i = 0; i < 5; i++) {
System.out.println(Math.abs(random.nextInt()) % 10);
}
}
}
输出结果如下:
5
5
6
4
8
备注:
1、如果想要生成100范围内的随机数,则用100来取模即可;
2、获得的随机数有正有负的,用Math.abs使获取数据范围为非负数
3、获取指定范围内的不重复随机数
import java.util.Random;
public class RandomThree {
public static void main(String[] args) {
int[] intRet = new int[6];
int intRd = 0; //存放随机数
int count = 0; //记录生成的随机数个数
int flag = 0; //是否已经生成过标志
while (count < 6) {
Random rdm = new Random(System.currentTimeMillis());
intRd = Math.abs(rdm.nextInt()) % 32 + 1;
for (int i = 0; i < count; i++) {
if (intRet[i] == intRd) {
flag = 1;
break;
} else {
flag = 0;
}
}
if (flag == 0) {
intRet[count] = intRd;
count++;
}
}
for (int t = 0; t < 6; t++) {
System.out.println(t + "->” + intRet[t]);
}
}
}
输出结果如下:
0->9
1->17
2->6
3->1
4->22
5->4
[整理自网络]
Sorry, the comment form is closed at this time.
No comments yet.