在学习时,看到有Rand()和ThreadLocalRandom()两个类都可以生成随机数,但是Rand()在使用时,默认是从0开始到指定位置内取随机数。
如果想生成例如:5~20区间的随机数时,ThreadLocalRandom()提供了方法,但是对于Random()如何去操作并没有详细解释,自己尝试了一下,发现可以先减去区间最小值生成随机数,再将得到的随机结果加上之前减去数的方法来取得正确的区间。
import java.util.concurrent.ThreadLocalRandom;
public class RandomTest{
public static void main(String[] args){
//ThreadLocalRandom和Random不同,使用了private来修饰,如果使用new来实例化,则会报错
ThreadLocalRandom rand1 =ThreadLocalRandom.current();
//打印20个随机数
for(int i =0;i<20;i++){
System.out.println("输出随机数:"+rand1.nextInt(5,20));
}
}
}
查看结果:
输出随机数:5
输出随机数:12
输出随机数:7
输出随机数:11
输出随机数:14
输出随机数:16
输出随机数:5
输出随机数:16
输出随机数:16
输出随机数:7
输出随机数:13
输出随机数:19
输出随机数:10
输出随机数:17
输出随机数:8
输出随机数:9
输出随机数:9
输出随机数:11
输出随机数:11
输出随机数:15
最小值是5,最大值是19;看到随机数是从指定位置(5)开始到边界(20)结束(不包括边界20)。
import java.util.Random;
public class RandomTest{
public static void main(String[] args){
Random rand2 =new Random();
for(int i =0;i<20;i++){
//如果要和字符串连接,必须加括号,否则会因为自动转型得到错误的结果
System.out.println("输出随机数:"+(rand2.nextInt(20-5)+5));
//1.下面这样写则会报错
//System.out.println("输出随机数:"+rand2.nextInt(5,20));
//2.下面这样写会得到错误结果
//System.out.println("输出随机数:"+rand2.nextInt(20-5)+5)
}
}
}
结果
输出随机数:14
输出随机数:7
输出随机数:6
输出随机数:13
输出随机数:8
输出随机数:14
输出随机数:15
输出随机数:7
输出随机数:11
输出随机数:19
输出随机数:12
输出随机数:7
输出随机数:12
输出随机数:11
输出随机数:9
输出随机数:5
输出随机数:10
输出随机数:12
输出随机数:5
输出随机数:11
最小值是5,最大值是19;看到随机数是从指定位置(5)开始到边界(20)结束(不包括边界20)。