1.Math类
Math类是数学操作类,提供了一些用于进行数学计算的静态方法。Math类中有两个静态常量PI和E,分别代表数学常量π和e。
列表中是Math类的一些常用方法:
方法声明
功能描述
int abs(int a)
计算a的绝对值
double ceil(double a)
向上取整,求大于参数的最小整数
double floor(double a )
向下取整,求小于参数的最大整数
long round(double a)
表示四舍五入,算法为Math.floor(a+0.5)
double max(double a,double b)
取两个数的较大值
double min(double a,double b)
取两个数的较小值
double random()
生成一个0到1之间的随机数
下面是Math类中一些常用方法的例子。
Example01.java
public classExample01 {public static voidmain(String[] args) {
System.out.println("计算绝对值的结果:" + Math.abs(-1));
System.out.println("求大于参数的最小整数:" + Math.ceil(5.6));
System.out.println("求小于参数的最大整数:" + Math.floor(-4.2));
System.out.println("对小数进行四舍五入后的结果:" + Math.round(-4.6));//round()表示四舍五入,算法为Math.floor(x+0.5)
System.out.println("求两个数的较大值: " + Math.max(2.1, -2.1));
System.out.println("求两个数的较小值:" + Math.min(2.1, -2.1));
System.out.println("生成一个大于等于0.0小于1.0的随机数:" +Math.random());
}
}
运行结果如下:
2.Random类
Random类存在于java.util包中,它可以在指定的取值范围内产生随机数。下面是它的构造方法:
方法声明
功能描述
Random()
构造方法,用于创建一个伪随机数生成器
Random(long seed)
构造方法,使用一个long型的seed种子创建伪随机数生成器
上面的构造方法中,第一个构造方法是无参的,通过它创建的Random实例对象每次使用的种子是随机的,因此每个对象所产生的随机数不同。如果希望创建的多个Random实例对象产生相同序列的随机数,则可以在创建对象时调用第二个构造方法,传入相同的种子即可。下面是构造方法的例子:
Example02.java
public classExample02 {public static voidmain(String[] args) {
Random random= new Random();//不传入种子//随机产生10个【0,100】之间的整数
for (int i = 0; i < 10; i++) {
System.out.println(random.nextInt(100));
}
}
}
第一次运行结果如下:
第二次运行结果如下:
从上面的两次结果可以看出来,两次产生的随机数序列是不一样的。这是因为当创建Random的实例对象时,没有指定种子,系统会以当前时间戳为种子,产生随机数。
下面把代码稍作修改:
Example03.java
public classExample03 {public static voidmain(String[] args) {
Random random= new Random(13);//创建对象时传入种子//随机产生10个【0,100】之间的整数
for (int i = 0; i < 10; i++) {
System.out.println(random.nextInt(100));
}
}
}
第一次运行结果如下:
第二次运行结果如下:
从两次运行结果可以看出来,在创建Random类的实例对象时,如果指定了相同的种子,则每次产生的随机数是相同的。
Random类提供了更多的方法来生成各种伪随机数,不仅可以生成整数类型的随机数,还可以生成浮点类型的随机数。
方法声明
功能描述
boolean nextBoolean()
随机生成boolean类型的随机数
double nextDouble()
随机生成double类型的随机数
float nextFloat()
随机生成float类型的随机数
int nextInt()
随机生成int类型的随机数
int nextInt(int n)
随机生成0~n之间的int类型的随机数
long nextLong()
随机生成long类型的随机数
下面通过例子来看一下这些方法的使用:
Example04.java
public classExample04 {public static voidmain(String[] args) {
Random r1= new Random();//创建Random实例对象
System.out.println("产生float类型的随机数:" +r1.nextFloat());
System.out.println("产生0-100之间int类型的随机数:" + r1.nextInt(100));
System.out.println("产生double类型的随机数:" +r1.nextDouble());
}
}
运行结果如下:
从上面的运行结果可以看出来,通过调用Random类不同的方法分别产生了不同类型的随机数。