JavaSE基础:Math类和Random类

数学计算Math类

Math类就属于方法类知识,虽然在实际项目中很少用到,但是总会用到。

那在Java中Math类是干嘛的? Math类在java.lang包中,包含完成基本数学函数所需的方法。

1.操作数据

Math类位于java.lang包中,包含用于执行基本数学运算的方法,Math类的所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如:Math.round();

编号方法名称类型描述
1public static long round(double a)静态方法返回四舍五入的整数
2public static double floor(double a)静态方法返回小于参数的最大整数(地板数)
3public static double ceil(double a)静态方法返回大于参数的最大整数(天花板数)
4public 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以内的随机数,给数组中的每个元素赋值,并输出结果

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+",");
        }

    }
}
复制代码

2.三角函数

来源API的解释,自己使用的时候方便查询而已,推荐查看官方API

编号方法名称类型描述
1public static double toDegrees(double angrad)静态方法将-π/2到π/2之间的弧度值转化为度 例如:
Math.toDegrees(Math.PI/2)结果为90.0;
2public static double toRadians(double angdeg)静态方法将度转化为-π/2到π/2之间的弧度值 例如:
Math.toRadians(30)结果为 π/6;
3public static double sin(double a)静态方法返回角的三角正弦
4public static double cos(double a)静态方法返回角的三角余弦
5public static double tan(double a)静态方法返回角的三角正切
6public static double asin(double a)静态方法返回一个值的反正弦;
返回的角度范围在 -pi/2 到 pi/2 之间
7public static double acos(double a)静态方法返回一个值的反余弦;返回的角度范围在 0.0 到 pi 之间
8public static double atan(double a)静态方法返回一个值的反正切;返回的角度范围在 -pi/2 到 pi/2 之间

3.指数函数

编号方法名称类型描述
1public static double exp(double a)静态方法获得以e为底a为指数的数值
2public static double log(double a)静态方法对数函数
3public static double log10(double a)静态方法底数为 10 的对数
4public static double pow(double a, double b)静态方法a为底b为指数的值
5public static double sqrt(double a)静态方法正平方根

4.最大值,最小值,绝对值

编号方法名称类型描述
1public static double max(double a, double b)静态方法最大值
2public static float max(float a, float b)静态方法最大值
3public static int max(int a, int b)静态方法最大值
4public static long max(long a, long b)静态方法最大值
5public static double min(double a, double b)静态方法最小值
6public static float min(float a, float b)静态方法最小值
7public static int min(int a, int b)静态方法最小值
8public static long min(long a, long b)静态方法最小值
9public static double abs(double a)静态方法绝对值

关于数学计算的Math类,根据实际的需要,查阅API文档才是正道!

随机数Random类

Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同,这点在生成多个随机数字时需要特别注意。

1.Random的构造方法

public Random()
复制代码

该构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子数,然后使用这个种子数构造Random对象

public Random(long seed)
复制代码

该构造方法可以通过制定一个种子数进行创建

Random r = new Random();  
Random r1 = new Random(100);
复制代码

注意:种子数只是随机算法的起源数字和生成的随机数字的区间无关。

2.常用方法

Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率是均等的。

编号方法名称类型描述
1public boolean nextBoolean()普通方法生成一个随机的boolean值,
生成true和false的值几率相等,
也就是都是50%的几率
2public double nextDouble()普通方法生成一个随机的double值,数值介于[0,1.0)之间
3public int nextInt()普通方法生成一个随机的int值,该值介于int的区间,
也就是-231到231-1之间
4public int nextInt(int n)普通方法生成一个随机的int值,该值介于[0,n)的区间,
也就是0到n之间的随机int值
5public 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);

    }
}

复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值