Math 클래스
Math의 특징
Math 클래스는 java.lang 패키지에 포함되어 있으며 기본적인 산술 연산을 제공합니다. 모든 멤버 메소드는 static 타입이므로 다음과 같이 클래스 이름으로 바로 사용하면 됩니다.
double d = Math.random();
double pi = Math.PI; // 3.141592 원주율
Math 클래스의 주요 메소드
| 메소드 | 설명 |
| static double abs(double a) | 실수 a의 절댓값 리턴 |
| static double cos(double a) | 실수 a의 cosine 값 리턴 |
| static double sin(double a) | 실수 a의 sine 값 리턴 |
| static double tan(double a) | 실수 a의 tangent 값 리턴 |
| static double exp(double a) | e제곱 a의 값 리턴 |
| static double ceil(double a) | 올림. 실수 a보다 크거나 같은 수 중에서 가장 작은 정수를 실수 타입으로 리턴 |
| static double floor(double a) | 내림. 실수 a보다 작거나 같은 수 중에서 가장 큰 정수를 실수 타입으로 리턴 |
| static double max(double a, double b) | 두 수 a, b 중에서 큰 수 리턴 |
| static double min(double a, double b) | 두 수 a, b 중에서 작은 수 리턴 |
| static double random() | 0.0보다 크고 같고 1.0보다 작은 임의의 실수 리턴 |
| static lond round(double a) | 반올림. 실수 a를 소수 첫째 자리에서 반올림한 정수를 long 타입으로 변환 |
| static double sqrt(double a) | 실수 a의 제곱근 리턴 |
Math 클래스를 활용한 난수 발생
Math 클래스에서 가장 많이 사용하는 메소드는 난수를 발생하는 random()입니다. 이 메소드는 0.0보다 크거나 같고 1.0보다 작은 임의의 double 값을 리턴합니다. random()을 이용하여 1에서 100까지 (100 포함)의 정수 난수를 10개 발생시키는 코드는 다음과 같습니다.
for (int x = 0; x < 10; x++) {
int n = (int)(Math.random() * 100 + 1); // n은 [1~100] 사이의 랜덤 함수
System.out.println(n);
}
Math.random() * 100은 0.0 ~ 99.9999... 사이의 실수이고, 여기에 1월 더하면 1.0 ~ 100.9999 사이의 랜덤한 실수입니다. 다시 이 값을 (int)로 강제 타입 변환하면 소수점 이하가 떨어져 나가므로 1~100까지 정수 값을 얻을 수 있습니다.
public class MathEx {
public static void main(String[] args) {
System.out.println(Math.PI); // 원주율 상수 출력
System.out.println(Math.ceil(3.8)); // ceil(올림)
System.out.println(Math.floor(3.1)); // floor(내림)
System.out.println(Math.sqrt(9)); // 제곱근
System.out.println(Math.exp(2)); // e의 2승
System.out.println(Math.round(3.14)); // 반올림
// [1, 45] 사이의 정수형 난수 5개 발생
System.out.println("이번주 행운의 번호는 ");
for (int i = 0; i < 5; i++)
System.out.print((int) (Math.random() * 45 + 1) + " "); // 난수 발생
}
}
실행 결과
3.141592653589793
4.0
3.0
3.0
7.38905609893065
3
이번주 행운의 번호는
5 13 31 34 39
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
| 컬렉션과 제네릭 (0) | 2025.03.24 |
|---|---|
| Calendar 클래스 (0) | 2025.03.21 |
| StringTokenizer 클래스 (0) | 2025.03.14 |
| StringBuffer 클래스 (0) | 2025.03.13 |
| String 클래스 (0) | 2025.03.11 |