我是靠谱客的博主 高贵白羊,最近开发中收集的这篇文章主要介绍【Java 基础】数字相关类Math、Random、SecureRandom一、概述二、Math三、Random四、SecureRandom五、Random 和 SecureRandom 常用方法:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

数字相关类 — Math、Random、SecureRandom

  • 一、概述
  • 二、Math
    • 1、常用数值:
      • ① PI (圆周率π)
      • ① E (自然对数e)
    • 2、常用方法:
      • ① abs → 绝对值
      • ② cos、sin、tan → 正弦、余弦、正切
      • ③ log、log10 → 以e为底对数、以10为底对数
      • ④ max、min → 最大值、最小值
      • ⑤ pow → 乘方
      • ⑥ sqrt → 平方根
      • ⑦ random → 随机数
  • 三、Random
  • 四、SecureRandom
  • 五、Random 和 SecureRandom 常用方法:
    • 1、nextInt
      • ① nextInt()
      • ② nextInt(int bound)
    • 2、nextLong()
    • 3、nextDouble()
    • 4、nextFloat()
    • 5、nextBoolean()

一、概述

  • 当我们要使用函数、取随机数测试时,难免会用到 数字相关类,其中包括Math、Random、SecureRandom。

二、Math

  • Math类主要用于计算常规函数值(x²、sin x、cos x等),也用于取具有特殊含义的值(e、π等 )
  • Math类内有大量的静态方法供我们直接调用,因此,它使用起来十分方便。

下面,我们介绍Math类的常用数值与方法:

1、常用数值:

① PI (圆周率π)

  • 返回一个double类型的圆周率π。
    PI
    打印输出结果:
System.out.println(Math.PI);

运行结果如下:
运行结果

① E (自然对数e)

  • 返回一个double类型的自然对数e。
    E
    打印输出结果:
System.out.println(Math.E);

运行结果如下:
运行结果

2、常用方法:

① abs → 绝对值

  • 计算一个数的绝对值并返回,类型与传入参数一致。
    abs
//分别定义两个负值
int a = -19;
double d = -15.69;
//计算两数的绝对值,并打印输出
System.out.println(Math.abs(a));
System.out.println(Math.abs(d));

运行结果如下:
运行结果

② cos、sin、tan → 正弦、余弦、正切

  • 使用这三个函数可以方便我们计算一个数的正弦、余弦、正切,它们的返回值类型为double。
    在这里插入图片描述
    sin
    tan
    分别计算一个数字正弦、余弦、正切值:
    传入int:
int a = 12;
System.out.println(Math.cos(a));
System.out.println(Math.sin(a));
System.out.println(Math.tan(a));

int
传入double:

double b = 3.14;
System.out.println(Math.cos(b));
System.out.println(Math.sin(b));
System.out.println(Math.tan(b));

double

③ log、log10 → 以e为底对数、以10为底对数

  • 使用这两个函数可以方便我们以e为底对数、以10为底对数,它们的返回值类型为double。
    log
    log10

计算 以e为底e的对数、以10为底10的对数:

System.out.println(Math.log(Math.E));
System.out.println(Math.log10(10));

④ max、min → 最大值、最小值

  • 返回传入两数中的最大值 / 最小值,类型与传入参数一致。
    max
    min

打印输出两数最大值、最小值:

//定义两个大小不等的int类型变量
int a = 12;
int b = 19;
//定义两个大小不等的double类型变量
double c = 12.94;
double d = 15.69;
//打印输出最大值、最小值
System.out.println(Math.max(a,b));
System.out.println(Math.min(c,d));

运行结果如下:
运行结果

⑤ pow → 乘方

  • 计算一个数的乘方并返回,第一个参数是底数,第二个参数是幂(次数),返回值类型为double。
    pow
    我们分别计算2的平方、3的立方:
//计算2的平方
System.out.println(Math.pow(2,2));
//计算3的立方
System.out.println(Math.pow(3,3));

运行结果如下:
运行结果
我们计算2的倒数:

//计算2的倒数
System.out.println(Math.pow(2,-1));

2的倒数

⑥ sqrt → 平方根

  • 计算一个数的平方根并返回,返回类型为double。
    sqrt

计算256的平凡根,并打印输出:

//计算256的平凡根,并打印输出
System.out.println(Math.sqrt(256));

运行结果如下:
运行结果

⑦ random → 随机数

  • 返回一个double类型的随机小数。
    random
    循环打印10个随机数:
for (int i = 0; i < 10; i++) {
	System.out.println(Math.random());
}

运行结果如下:
运行结果

  • 它的源码如下:
  • 可以看到其底层使用了Random对象和nextDouble,使用Random意味着我们取到的随机数是“伪随机数”,又被破解的可能性,因此它适用于对安全性要求较低的场景。
    random
    random

三、Random

  • Random取出的随机数,因数据足够多,可找到一定规律,我们称之为“伪随机数”。

  • 在使用Random时,需确保当前场景对安全性需求等级较低,否则将造成不必要的损失!

实例化一个Random对象:

Random random  = new Random();

四、SecureRandom

  • SecureRandom取出的随机数,因难以找到规律,所以我们称之为“真随机数”。

  • SecureRandom的安全性是通过操作系统提供的安全的随机种子来生成随机数。这个种子是通过CPU的热噪声、读写磁盘的字节、网络流量等各种随机事件产生的“熵”。

  • 在密码学中,安全的随机数非常重要。如果使用不安全的伪随机数,所有加密体系都将被攻破。

  • 因此,需要使用安全随机数的时候,必须使用SecureRandom,绝不能使用Random!

实例化一个SecureRandom对象:

SecureRandom secureRandom  = new SecureRandom();

五、Random 和 SecureRandom 常用方法:

下面我们介绍其所具有的常用方法,由于两者对方法的调用无较大区别,我们以Random为例,进行演示:

1、nextInt

nextInt

① nextInt()

Random random  = new Random();
for(int i = 0 ; i < 10 ; i++){
	int num = random.nextInt();     //取随机数,并赋值给num
	System.out.println(num);        //打印num
}

运行结果如下,可以看到每次所取的随机数均不同:
运行结果

② nextInt(int bound)

  • 这种调用方式可以确定生成随机整数的范围,参数为范围值(若传入10,则默认返回0~10的随机整数)
  • 若想生成起点不为0,连续范围的随机整数,则可以加上一个起点值:
Random r = new Random();
r.nextInt(bound) + beginValue;

具体应用如下:

Random r = new Random();
//获取10个0~10的随机整数
for (int i = 0; i < 10; i++) {
	System.out.print(r.nextInt(10 )+ "t");
}
System.out.println("n---------------------------------------");
//获取10个2~12的随机整数
for (int i = 0; i < 10; i++) {
	System.out.print(2 + r.nextInt(10)+ "t");	//起点为2
}

运行结果如下:
运行结果

2、nextLong()

Random random  = new Random();
for(int i = 0 ; i < 10 ; i++){
	long num = random.nextLong();     //取随机数,并赋值给num
	System.out.println(num);         //打印num
}

运行结果如下:
在这里插入图片描述

3、nextDouble()

Random random  = new Random();
for(int i = 0 ; i < 10 ; i++){
	double num = random.nextDouble();       //取随机数,并赋值给num
	System.out.println(num); 				//打印num 
}

运行结果如下:
运行结果

4、nextFloat()

Random random  = new Random();
for(int i = 0 ; i < 10 ; i++) {
	double num = random.nextFloat();        //取随机数,并赋值给num
	System.out.println(num);                //打印num
}

运行结果如下:
运行结果

5、nextBoolean()

Random random  = new Random();
for(int i = 0 ; i < 10 ; i++) {
	boolean num = random.nextBoolean();        //取随机数,并赋值给num
	System.out.println(num);                //打印num
}

运行结果如下:
运行结果

最后

以上就是高贵白羊为你收集整理的【Java 基础】数字相关类Math、Random、SecureRandom一、概述二、Math三、Random四、SecureRandom五、Random 和 SecureRandom 常用方法:的全部内容,希望文章能够帮你解决【Java 基础】数字相关类Math、Random、SecureRandom一、概述二、Math三、Random四、SecureRandom五、Random 和 SecureRandom 常用方法:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部