首页 > 代码库 > JAVA API(三) Math类和Random类

JAVA API(三) Math类和Random类

 

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 class Example01 {
    public static void main(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 class Example02 {
    public static void main(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 class Example03 {
    public static void main(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 class Example04 {
    public static void main(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类不同的方法分别产生了不同类型的随机数。

JAVA API(三) Math类和Random类