java如何生成一个简单随机数
一、利用random方法
Java的Math类中,有一个random的方法可以用来生成随机数,这也是最简单的用来生成随机数的方法。
random方法讲解
random方法本身会生成0~1之间的随机数,注意,这些随机数都是double类型的,并且是大于等于0,小于1的。(不会等于1!!!)
在使用的时候我们可以对random方法灵活处理,来获得我们想要的数。
public static void main(String[] args) {
//如何随机生成1-10之间的整数?
int num=(int)(Math.random()*10+1);
System.out.println(num);
}
}
前面的(int)是将随机生成的double类型强制转换成int类型,
再将random*10即可获得范围0~9之间的整数,
再+1即可获得1~10之间的随机整数.
如果想要随机生成1~N之间的整数,我们只需要把上面代码中的10换成N就ok了
再举个例子,比如我想获得10到100之间的随机整数,
public static void main(String[] args) {
int max=100;
int min=10;
//也可以不定义max,min变量,直接把下面的max,min换成我们想要的范围
//max是最大值,min是这个范围的最小值
int num=(int)(Math.random()*(max-min)+min);
System.out.print(num);
}
二、通过Random类来实现
Random类的使用需要先定义一个实例
然后就可以通过这个实例生成随机数,不仅可以生成随机的int型整数,还能生成随机的float型,随机的double型,随机的boolean类型等等
public static void main(String[] args) {
Random a =new Random();//定义一个实例
int ran1=a.nextInt();
}
此处ran1就是通过实例生成的随机整数,还可以随机生成其他类型的数
public static void main(String[] args) {
Random a =new Random();
int ran1=a.nextInt();
int ran=a.nextInt(20);
//这里可以指定随机数最大不能超过20
float ran2=a.nextFloat();
double ran3=a.nextDouble();
boolean ran4=a.nextBoolean();
}
Random类可以指定生成的随机数的范围上限,但是不能指定下限。
三 、通过获取毫秒数来实现
在System类中有一个currentTimeMillis的方法,这个方法是返回从1970年1月1号0点0分0秒到现在的毫秒数,返回的类型是long,我们可以返回值进行灵活操作,来获取一些随机值。
使用方法如下:
public static void main(String[] args) {
//生成1~100之间的随机值
long randomNum=System.currentTimeMillis();
int ran=(int)(randomNum%(100-1)+1);
}
此处的ran就是我们想要的随机值,后面的100和1可以自由的替换,100可以替换成随机数范围的上限,1替换成随机数范围的下限。
这种方法一般不常用,但也是一种思路。
四、利用ThreadLocalRandom类
public static void main(String[] args) {
//分别生成不同类型的随机值
int ran1= ThreadLocalRandom.current().nextInt();
double ran2=ThreadLocalRandom.current().nextDouble();
float ran3=ThreadLocalRandom.current().nextFloat();
boolean ran4 =ThreadLocalRandom.current().nextBoolean();
ThreadLocalRandom类与Random类相比,ThreadLocalRandom类在使用的过程中不需要显式初始化实例,这样可以避免创建一些无用的实例。