자바스크립트 - Math 객체
우리는 프로그램을 작성할 때 수학적인 연산을 프로그램으로 구현해야하는 경우가 많습니다.
자바스크립트에서는 Math 객체를 사용하면 숫자에 대한 수학적 연산을 복잡한 구현없이 편리하게 수행할 수 있습니다.
Math 객체에서 지원하는 메소드의 종류는 다음과 같습니다.
메소드(Method) | 내용 |
Math.round(x) | 입력된 x의 값을 가장 가까운 정수로 반올림 |
Math.pow(x, y) | x의 값을 y의 거듭제곱으로 변환 (ex. Math.pow(8, 2) == 64) |
Math.sqrt(x) | x의 제곱근을 반환 |
Math.abs(x) | x의 절댓값을 반환 |
Math.ceil(x) | x의 값을 올림 |
Math.floor(x) | x의 값을 내림 |
Math.sin(x) | 각도 x 만큼의 sin 값을 반환(radian 값) |
Math.cos(x) | 각도 x 만큼의 cos 값을 반환(radian값) |
Math.min(x1, x2, ...) | 인자로 전달된 수 중에서 최소값을 반환 |
Math.max(x1, x2 ...) | 인자로 전달된 값 중에서 최대값을 반환 |
Math.random() | 0(포함)과 1(제외) 사이의 난수를 발생 (뒤에서 구체적으로 다룸) |
(위의 표는 Math의 모든 메소드를 제시한 것이 아니며 더 많은 메소드가 존재합니다.)
Math.random() 과 관련해서 기억할 것
Math.random() 메소드는 0(포함)과 1(제외) 사이의 난수를 반환합니다. 그렇기 때문에 Math.random()의 실행결과는 항상
1보다 작은 수를 반환하게 됩니다.
랜덤으로 정수를 출력하기(원하는 범위의)
그렇다면 원하는 범위 내에서 난수를 발생시키기 위해서는 어떻게 해야할까요?
Math.floor()와 Math.random()을 함께 사용하면 원하는 범위 내의 임의의 정수를 반환하도록 만들 수 있습니다.
Math.floor(Math.random() * 10); // 0 ~ 9 사이의 정수 중에서 임의의 정수를 반환
Math.floor(Math.random() * 11); // 0 ~ 10 사이의 정수 중에서 임의의 정수를 반환
Math.floor(Math.random() * 100); // 0과 99 사이의 정수 중에서 임의의 정수를 반환
Math.floor(Math.random() * 101); // 0과 100 사이의 정수 중에서 임의의 정수를 반환
Math.floor(Math.random() * 10) + 1; // 0 ~ 10 사이의 정수 중에서 임의의 정수를 반환
Math.floor(Math.random() * 100) + 1; // 0 ~ 100 사이의 정수 중에서 임의의 정수를 반환
위의 3가지 예시와 그 주석을 함께 참고하면 어떠한 방식으로 난수를 발생시키는 범위를 지정할 수 있는 지
이해할 수 있을 것입니다.
임의의 정수를 반환하는 random 함수를 만들기
특정 범위에서 난수를 발생시키는 random 함수를 다음과 같이 구현하여 사용하는 것이 편리합니다.
function getRandInteger(min, max) {
return Math.floor(Math.random() * (max - mix)) + min;
}
-> 인자로 전달받은 min(포함)과 max(제외) 사이의 난수를 반환합니다.
function getRandInteger(min, max) {
return Math.floor(Math.random() * (max - mix + 1)) + min;
}
-> 인자로 전달받은 min(포함)과 max(포함) 사이의 난수를 반환합니다.
또한 Math 객체에서는 8개의 수학적 상수를 제공합니다.
상수 | 내용 |
Math.E | 오일러 수(e) |
Math.PI | 원주율(π) |
Math.SQRT2 | 2의 제곱근(√2) |
Math.SQRT1_2 | 1/2의 제곱근 (√(1/2)) |
Math.LN2 | 2의 자연로그 값 |
Math.LN10 | 10의 자연로그 값 |
Math.LOG2E | e의 밑이 2인 로그 값 |
Math.LOG10E | e의 밑이 10인 로그 값 |
Math 생성자
다른 객체와 달리 Math 객체는 생성자가 존재하지 않습니다. 즉, Math객체의 메소드와 속성은 정적입니다.
Math 객체를 먼저 만들지 않고도 모든 메서드와 속성(상수)를 사용하는 것이 가능합니다.
'Web Basic > JavaScript' 카테고리의 다른 글
자바스크립트 - 정규식(Regular Expressions) (0) | 2020.07.28 |
---|---|
자바스크립트 - 반복문, break, continue (0) | 2020.07.28 |
자바스크립트 - 날짜 객체 (Date Object) (0) | 2020.07.28 |
자바스크립트 - 배열(Array) (0) | 2020.07.28 |
자바스크립트 문자열(String) (0) | 2020.07.27 |
댓글
이 글 공유하기
다른 글
-
자바스크립트 - 정규식(Regular Expressions)
자바스크립트 - 정규식(Regular Expressions)
2020.07.28 -
자바스크립트 - 반복문, break, continue
자바스크립트 - 반복문, break, continue
2020.07.28 -
자바스크립트 - 날짜 객체 (Date Object)
자바스크립트 - 날짜 객체 (Date Object)
2020.07.28 -
자바스크립트 - 배열(Array)
자바스크립트 - 배열(Array)
2020.07.28