확실히 온라인보다는 오프라인이 낫다. 매우
Math.random()
구글에 js 최소 ~ 최대값 랜덤으로 뽑기
를 치면 당연히 답은 나온다. 물론 생각보다 간결하고 길지 않고 어렵지 않다.
근데 이해가 안된다.
구글에선 이렇게 나온다.
function getRandomNumber(max, min) {
const randomNum = Math.floor((Math.random()*(max - min + 1)) + min);
return randomNum
}
내가 이해할 수 있는 방식대로 정리해보자.
먼저 Math.*** 을 수를 어떻게까지 다룰 수 있는지 정리가 필요했다.
Math.round(x)메서드 : 반올림 값 반환.
Math.ceil(x)메서드 : 가장 가까운 정수로 올림 된 x 값을 반환
Math.floor(x)메서드 : 가장 가까운 정수 로 내림 한 x 값을 반환
Math.trunc(x)메서드 : x의 정수 부분 반환.
Math.sign(x)메서드 : x가 음수, null 또는 양수이면 반환
Math.pow(x, y)메서드 : x의 값을 y의 거듭제곱으로 반환
Math.sqrt(x)메서드 : x의 제곱근을 반환
Math.abs(x)메서드 : x의 절대(양수) 값을 반환
Math.min()메서드 : 인수 목록에서 가장 낮은 값 찾음
Math.max()메서드 : 인수 목록에서 가장 높은 값 찾음
Math.random()메서드 : 0(포함)과 1(제외) 사이의 난수 반환
랜덤수에서 사용할 함수들은 floor
와 random
이다.
floor는 위에 정리해놓았듯 가까운 정수로 내림을 한 x의 값을 반환하기 때문에 소수점이 없는 정수가 나오게 된다.
그리고 random값은 0과 1 사이에 0 부터 0.9999~ 까지의 수를 반환한다. 우리가 원하는건 최대값과 최소값의 사이에 있는 랜덤한 값이기 때문에 특정 수를 곱해줘서 정수로 만들고 floor를 사용해 소수점은 내릴 예정이다.
예를 들어 최대값 90
와 최소값 35
로 가정을 해보겠다.
Math.random()은 값을 곱할수록 최대값은 올라간다.
function getRandomNumber(max, min) {
const randomNum = Math.floor((Math.random()*(max - min + 1)));
return randomNum
}
+35(min)
min으로 파라미터를 받아와서 최소값을 설정해준다. function getRandomNumber(max, min) {
const randomNum = Math.floor((Math.random()*(max - min + 1)) + min);
return randomNum
}
이렇게 하면 max와 min에서 받아온 파라미터로 최소값과 최대값 사이에 랜덤수를 반환할 수 있다.