
확실히 온라인보다는 오프라인이 낫다. 매우
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에서 받아온 파라미터로 최소값과 최대값 사이에 랜덤수를 반환할 수 있다.