JAVA API Math类和Random类
Posted gouyadong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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类的主要内容,如果未能解决你的问题,请参考以下文章
大数据必学Java基础(四十九):Math类和Random类的讲解