Math类 & Random类
Math类:它是一个工具类,它的构造器被定义成private的,因此无法创建其对象,Math类中所有方法都是类方法,可以直接通过类名来调用它们。Math还提供了两个静态属性:PI、E,它们的值分别等于3.14159.....和e
public static void main(String[] args) {
//将弧度转换为角度
System.out.println(Math.toDegrees(1.57));
//将角度转换成弧度
System.out.println(Math.toRadians(90));
//计算反余弦
System.out.println(Math.acos(1.2));
//计算反正弦
System.out.println(Math.asin(0.8));
//取整,返回小于目标的最大整数
System.out.println(Math .floor(1.2));
//返回大于目标数的最小整数
System.out.println(Math.ceil(1.2));
//四舍五入取整
System.out.println(Math.round(2.3));
//计算平方根
System.out.println(Math.sqrt(2.3));
//计算立方根
System.out.println(Math.cbrt(9));
//计算绝对值
System.out.println(Math.abs(-4));
//返回一个伪随机数
System.out.println(Math.random());
}
Random类:专门用于生成一个伪随机数,它有两个构造器:一个构造器使用默认的种子,另一个构造器需要程序员显式传入一个long型整数的种子。
public static void main(String[] args) {
Random random=new Random();
System.out.println(random.nextBoolean());//生成布尔型的伪随机数
byte[] buffer=new byte[16];
random.nextBytes(buffer);//生成16个伪随机数的数组
System.out.println(Arrays.toString(buffer));
System.out.println(random.nextDouble());//生成0.0到1.0之间的伪随机double数
System.out.println(random.nextInt(20));//生成0~20之间的伪随机数
}
Random使用48位的种子,如果这个类的两个实例是用同一个种子创建,对它们以同样的顺序调用方法,则它们会产生相同的数字序列。也就是说,Random产生的数字并不是真正随机的,而是一种伪随机数。
为了避免这种情况,推荐使用当前时间作为Random对象的种子:Random r=new Random(System.cuyyentTimeMillis());