Java Math 类的使用
I. Java Math 类
java.lang.Math
: Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。是Java提供的一个封装好各种函数的一个类
II. Math 类常用方法
package org.lovian.math;
/**
* Java Math class demo
* @author PENG Zhengshuai
* @lovian.org
*
*/
public class MathDemo {
public static void main(String[] args) {
//public static final double PI
System.out.println("PI: " + Math.PI);
System.out.println("-------------------");
//public static final double E
System.out.println("E: " + Math.E);
System.out.println("-------------------");
//public static int abs(int a): 绝对值
System.out.println("10 abs: " + Math.abs(10));
System.out.println("-10.3 abs: " + Math.abs(-10.3));
System.out.println("-------------------");
//public static double ceil(double a): 向上取整
System.out.println("12.34 ceil: " + Math.ceil(12.34));
System.out.println("18.0 ceil: " + Math.ceil(18.0));
System.out.println("-------------------");
//public static double floor (double a): 向下取整
System.out.println("12.34 floor: " + Math.floor(12.34));
System.out.println("18.0 floor: " + Math.floor(18.0));
System.out.println("-------------------");
//public static int max(int a, int b): 最大值
System.out.println("12, 23 max: " + Math.max(12, 23));
System.out.println("12, 23, 18 max: " + Math.max(Math.max(12, 23), 18));
System.out.println("-------------------");
//public static double pow(double a, double b): a 的 b 次幂
System.out.println("2 pow 3: " + Math.pow(2, 3));
System.out.println("-------------------");
//public static double random() : 随机数 [0.0, 1.0)
System.out.println("random: " + Math.random());
// get a random value from 1 - 100
System.out.println("1-100 random: " + ((int) (Math.random() * 100) + 1));
//public static int round(double a): 四舍五入
System.out.println("13.24f round: " + Math.round(13.24f));
System.out.println("14.78 round: " + Math.round(14.78));
//public static double sqrt(double a): 正平方根
System.out.println("16 sqrt: " + Math.sqrt(16));
System.out.println("20.34 sqrt: " + Math.sqrt(20.34));
}
}
result
PI: 3.141592653589793
-------------------
E: 2.718281828459045
-------------------
10 abs: 10
-10.3 abs: 10.3
-------------------
12.34 ceil: 13.0
18.0 ceil: 18.0
-------------------
12.34 floor: 12.0
18.0 floor: 18.0
-------------------
12, 23 max: 23
12, 23, 18 max: 23
-------------------
2 pow 3: 8.0
-------------------
random: 0.7129835382519233
1-100 random: 28
13.24f round: 13
14.78 round: 15
16 sqrt: 4.0
20.34 sqrt: 4.509988913511872
III. 获取任意范围内的随机数
给出一个范围,返回这个范围内的任意随机整数
package org.lovian.math;
import java.util.Scanner;
/**
* Get random from [begin, end]
* @author PENG Zhengshuai
* @lovian.org
*
*/
public class Random {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Input begin: ");
int begin = sc.nextInt();
System.out.println("Input end: ");
int end = sc.nextInt();
for (int i = 0; i < 5; i++) {
System.out.println("random: " + getRandom(begin, end));
}
sc.close();
}
public static int getRandom(int begin, int end){
int number = (int) (Math.random() * (end - begin + 1)) + begin;
return number;
}
}
result:
Input begin:
34
Input end:
109
random: 53
random: 56
random: 109
random: 100
random: 54
IV. Randon 类的使用
java 封装好了一个专门生成随机数的类,用于生成随机数(伪随机数),有些时候,不如Math.random() 有效率
- 构造方法
public Random()
: 不用给种子, 使用默认的种子,是当前时间的纳秒值(nanotime)public Random(long seed)
: 给出指定种子进行随机数生成,每次生成的随机数是相同的
- 成员方法
public int nextInt()
: 返回的是 int 范围的随机数public int nextInt(int n)
: 返回的是 [0, n) 范围的随机数
package org.lovian.math;
import java.util.Random;
/**
* Random Class demo
* @author PENG Zhengshuai
* @lovian.org
*/
public class RandomClassDemo {
public static void main(String[] args) {
defaultSeedRandom();
randomWithSeed();
}
public static void defaultSeedRandom(){
// 默认种子:nanotime
Random r = new Random();
for (int i = 0; i < 5; i++) {
// int 范围的随机数
System.out.println(r.nextInt());
}
for (int i = 0; i < 5; i++) {
// 0-100(不包括100)之间的随机数
System.out.println(r.nextInt(100));
}
}
public static void randomWithSeed(){
// 给定种子
Random r = new Random(1000);
for (int i = 0; i < 5; i++) {
// int 范围的随机数
System.out.println(r.nextInt());
}
for (int i = 0; i < 5; i++) {
// 0-100(不包括100)之间的随机数
System.out.println(r.nextInt(100));
}
}
}
Share this on