Math.random()
Math.random()
함수는 0 이상 1 미만의 난수를 반환한다.
0 이상 1 미만의 난수 구하기
function randomNum() {
return Math.random();
}
위의 코드를 돌려보면 이런 식으로 반환한다.
범위 지정하기
Math.random() * (max - min) + min;
결괏값은 항상 min보다 크며, max보다 작다.
왜 최솟값을 더할까?
만약 1~10 사이의 수를 구한다 치자. Math.random()
은 항상 0 이상 1 미만의 수를 리턴하니 Math.random()
이 반환할 수 있는 가장 작은 수 0을 반환했다면, 0 * (10 - 1)는 0이다. 여전히 1보다 작다. 이때 최솟값인 1을 더해준다면 1이 되어 범위 내의 숫자를 구할 수 있게 되었다.
이번에는 Math.random()
이 반환할 수 있는 최댓값 0.9999... (이하 0.9라고 쓰겠다)을 반환했다고 하자. 그럼 0.9 * (10 - 1) 은 8.1이다. 그럼 8.1 더하기 1을 하면 9.1로, Math.random() * (max - min) + min
은 항상 최댓값 미만, 최솟값 이상의 수를 반환한다.
미만
'미만'(未滿)은 그 수량이 범위에 포함되지 않으면서 그 아래인 경우를 가리킨다.
이상
‘이상’(以上)은 기준이 수량으로 제시될 경우 그 수량이 범위에 포함되면서 그 위인 경우를 가리킨다.
- 출처: 서울신문
만약 최댓값을 포함하고 싶다면 아래와 같이 작성하면 된다.
Math.random() * (max - min + 1) + min
정수 난수 구하기
Math.ceil()
(올림)
Math.ceil()
// Math.ceil(Math.random())
Math.ceil()
는 주어진 숫자보다 크거나 같은 숫자 중 가장 작은 숫자를 integer로 반환한다. 즉, 실수가 들어오면 올림 하여 정수로 만들고, 정수가 들어오면 크거나 같은 숫자 중 가장 작은 숫자인 자기 자신을 반환한다. ceil는 영단어 ceiling에서 유래했는데, 이는 천장을 의미한다. 1
Math.ceil(4);
// 4
Math.ceil(1.4);
// 2
Math.ceil(1.6);
// 2
Math.ceil(-1.4);
// 2
Math.ceil(-1.6);
// 2
Math.floor()
(내림)
Math.floor()
// Math.floor(Math.random())
Math.floor()
는 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환한다. 즉, 2즉, 실수가 들어오면 올림 하여 정수로 만들고, 정수가 들어오면 크거나 같은 숫자 중 가장 작은 숫자인 자기 자신을 반환한다. Floor는 바닥, 천장과 반대인 바닥에서 이름을 따왔다.
Math.floor(4);
// 4
Math.floor(1.4);
// 1
Math.floor(1.6);
// 1
Math.floor(-1.4);
// -2
Math.floor(-1.6);
// -2
Math.round()
(반올림)
Math.round()
// Math.round(Math.random())
Math.round()
는 입력값을 반올림한 수와 가장 가까운 정수 값을 반환한다 . 즉, 소수점이 5 이상이면 올림, 5 미만이면 내림한 수를 반환한다. 3
Math.round(4);
// 4
Math.round(1.4);
// 1
Math.round(1.6);
// 2
Math.round(-1.4);
// -2
Math.round(-1.6);
// -1
참고
1. https://www.educative.io/edpresso/mathceil-mathfloor-and-mathround-in-javascript
2. https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/random
'Programming Language > JavaScript' 카테고리의 다른 글
[JavaScript] forEach와 map의 차이 (0) | 2021.12.27 |
---|---|
[JavaScript] 함수 여러 값 return 하기 (0) | 2021.10.11 |
[JavaScript] innerHTML / innerText / textContent 차이 (0) | 2021.10.08 |
댓글