概述
数字相关类 — 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类型的圆周率π。
打印输出结果:
System.out.println(Math.PI);
运行结果如下:
① E (自然对数e)
- 返回一个double类型的自然对数e。
打印输出结果:
System.out.println(Math.E);
运行结果如下:
2、常用方法:
① abs → 绝对值
- 计算一个数的绝对值并返回,类型与传入参数一致。
//分别定义两个负值
int a = -19;
double d = -15.69;
//计算两数的绝对值,并打印输出
System.out.println(Math.abs(a));
System.out.println(Math.abs(d));
运行结果如下:
② cos、sin、tan → 正弦、余弦、正切
- 使用这三个函数可以方便我们计算一个数的正弦、余弦、正切,它们的返回值类型为double。
分别计算一个数字正弦、余弦、正切值:
传入int:
int a = 12;
System.out.println(Math.cos(a));
System.out.println(Math.sin(a));
System.out.println(Math.tan(a));
传入double:
double b = 3.14;
System.out.println(Math.cos(b));
System.out.println(Math.sin(b));
System.out.println(Math.tan(b));
③ log、log10 → 以e为底对数、以10为底对数
- 使用这两个函数可以方便我们以e为底对数、以10为底对数,它们的返回值类型为double。
计算 以e为底e的对数、以10为底10的对数:
System.out.println(Math.log(Math.E));
System.out.println(Math.log10(10));
④ 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。
我们分别计算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));
⑥ sqrt → 平方根
- 计算一个数的平方根并返回,返回类型为double。
计算256的平凡根,并打印输出:
//计算256的平凡根,并打印输出
System.out.println(Math.sqrt(256));
运行结果如下:
⑦ random → 随机数
- 返回一个double类型的随机小数。
循环打印10个随机数:
for (int i = 0; i < 10; i++) {
System.out.println(Math.random());
}
运行结果如下:
- 它的源码如下:
- 可以看到其底层使用了Random对象和nextDouble,使用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()
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 常用方法:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复