Math类就属于方法类知识,虽然在实际项目中不多用到,可是总会用到。java
那在Java中Math类是干吗的? Math类在java.lang包中,包含完成基本数学函数所需的方法。算法
Math类位于java.lang包中,包含用于执行基本数学运算的方法,Math类的全部方法都是静态方法,因此使用该类中的方法时,能够直接使用类名.方法名,如:Math.round()
;数组
编号 | 方法名称 | 类型 | 描述 |
---|---|---|---|
1 | public static long round(double a) | 静态方法 | 返回四舍五入的整数 |
2 | public static double floor(double a) | 静态方法 | 返回小于参数的最大整数(地板数) |
3 | public static double ceil(double a) | 静态方法 | 返回大于参数的最大整数(天花板数) |
4 | public static double random() | 静态方法 | 返回[0,1)之间随机的浮点数 |
package com.shxt.demo03;
public class Demo01 {
public static void main(String[] args) {
double num = 13.56; // 定义一个double类型的变量
int a = (int)num; //强制类型转换,将double类型强制转换为int类型
System.out.println("强制类型转化:"+a);
long b = Math.round(num); //调用round方法,进行四舍五入
System.out.println("四舍五入:"+b);
double c = Math.floor(num);//地板数
System.out.println("地板数:"+c);
double d = Math.ceil(num);//天花板数
System.out.println("天花板数:"+d);
double e = Math.random(); //返回[0,1)之间随机的浮点数
System.out.println("随机数字[0,1):"+e);
//返回0-99的整数
int f = (int)(Math.random()*99);
System.out.println("随机整数[0,99):"+f);
}
}
/* 运行结果为: 强制类型转化:13 四舍五入:14 地板数:13.0 天花板数:14.0 随机数字[0,1):9.71689600570258E-4 随机整数[0,99):29 */
复制代码
示例:定义一个包含10个元素的整型数组,经过随机产生10之内的随机数,给数组中的每一个元素赋值,并输出结果dom
package com.shxt.demo03;
public class Demo02 {
public static void main(String[] args) {
int[] nums = new int[10];
for (int i = 0; i < 10; i++) {
nums[i]=(int)(Math.random()*10);
}
for (int num : nums){
System.out.print(num+",");
}
}
}
复制代码
来源API的解释,本身使用的时候方便查询而已,推荐查看官方API函数
编号 | 方法名称 | 类型 | 描述 |
---|---|---|---|
1 | public static double toDegrees(double angrad) | 静态方法 | 将-π/2到π/2之间的弧度值转化为度 例如: Math.toDegrees(Math.PI/2)结果为90.0; |
2 | public static double toRadians(double angdeg) | 静态方法 | 将度转化为-π/2到π/2之间的弧度值 例如: Math.toRadians(30)结果为 π/6; |
3 | public static double sin(double a) | 静态方法 | 返回角的三角正弦 |
4 | public static double cos(double a) | 静态方法 | 返回角的三角余弦 |
5 | public static double tan(double a) | 静态方法 | 返回角的三角正切 |
6 | public static double asin(double a) | 静态方法 | 返回一个值的反正弦; 返回的角度范围在 -pi/2 到 pi/2 之间 |
7 | public static double acos(double a) | 静态方法 | 返回一个值的反余弦;返回的角度范围在 0.0 到 pi 之间 |
8 | public static double atan(double a) | 静态方法 | 返回一个值的反正切;返回的角度范围在 -pi/2 到 pi/2 之间 |
编号 | 方法名称 | 类型 | 描述 |
---|---|---|---|
1 | public static double exp(double a) | 静态方法 | 得到以e为底a为指数的数值 |
2 | public static double log(double a) | 静态方法 | 对数函数 |
3 | public static double log10(double a) | 静态方法 | 底数为 10 的对数 |
4 | public static double pow(double a, double b) | 静态方法 | a为底b为指数的值 |
5 | public static double sqrt(double a) | 静态方法 | 正平方根 |
编号 | 方法名称 | 类型 | 描述 |
---|---|---|---|
1 | public static double max(double a, double b) | 静态方法 | 最大值 |
2 | public static float max(float a, float b) | 静态方法 | 最大值 |
3 | public static int max(int a, int b) | 静态方法 | 最大值 |
4 | public static long max(long a, long b) | 静态方法 | 最大值 |
5 | public static double min(double a, double b) | 静态方法 | 最小值 |
6 | public static float min(float a, float b) | 静态方法 | 最小值 |
7 | public static int min(int a, int b) | 静态方法 | 最小值 |
8 | public static long min(long a, long b) | 静态方法 | 最小值 |
9 | public static double abs(double a) | 静态方法 | 绝对值 |
关于数学计算的Math类,根据实际的须要,查阅API文档才是正道!spa
Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行必定的变换,从而产生须要的随机数字。相同种子数的Random对象,相同次数生成的随机数字是彻底相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字彻底相同,第二次生成的随机数字也彻底相同,这点在生成多个随机数字时须要特别注意。code
public Random() 复制代码
该构造方法使用一个和当前系统时间对应的相对时间有关的数字做为种子数,而后使用这个种子数构造Random对象对象
public Random(long seed) 复制代码
该构造方法能够经过制定一个种子数进行建立文档
Random r = new Random();
Random r1 = new Random(100);
复制代码
注意:种子数只是随机算法的起源数字和生成的随机数字的区间无关。数学
Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的概率是均等的。
编号 | 方法名称 | 类型 | 描述 |
---|---|---|---|
1 | public boolean nextBoolean() | 普通方法 | 生成一个随机的boolean值, 生成true和false的值概率相等, 也就是都是50%的概率 |
2 | public double nextDouble() | 普通方法 | 生成一个随机的double值,数值介于[0,1.0)之间 |
3 | public int nextInt() | 普通方法 | 生成一个随机的int值,该值介于int的区间, 也就是-231到231-1之间 |
4 | public int nextInt(int n) | 普通方法 | 生成一个随机的int值,该值介于[0,n)的区间, 也就是0到n之间的随机int值 |
5 | public void setSeed(long seed) | 普通方法 | 从新设置Random对象中的种子数 |
package com.shxt.demo04;
import java.util.Random;
public class Demo01 {
public static void main(String[] args) {
Random random = new Random();
double num1 = random.nextDouble();
System.out.println("生成[0,1.0)区间的小数:"+num1);
//生成[0,10.0)区间的小数:将该区间扩大10倍便是要求的区间
double num2 = random.nextDouble()*10;
System.out.println("生成[0,10.0)区间的小数:"+num2);
//生成[1,5.5)区间的小数:只须要首先生成[0,5.5)区间的随机数字,而后将生成的随机数区间加1便可
double num3 = random.nextDouble()*5.5+1;
System.out.println("生成[1,5.5)区间的小数:"+num3);
//生成任意整数:直接使用nextInt方法便可
int num4 = random.nextInt();
System.out.println("生成任意的整数:"+num4);
//生成[0,100)区间的整数
int num5 = random.nextInt(100);
System.out.println("生成[0,100)区间的整数:"+num5);
//生成[-100,100)区间的整数
int num6 = random.nextInt(200)-100;
System.out.println("生成[-100,100)区间的整数:"+num6);
}
}
复制代码