랜덤수를 반환하는는 함수 Math.random() 만으로는 내가 원하는 범위의 랜덤수를 얻을 수가 없습니다.
항상 0.0000000000..에서 0.9999999999... 사이 값만 return 해주기 때문이죠.
따라서 (0~1)에 구하고자 하는 사잇값의 개수를 곱해줘야 합니다.
'큰숫자-작은숫자+1'이 큰숫자와 작은숫자를 '포함한' 사잇값의 개수입니다.
따라서 아래와 같이 (max - min +1)를 곱해줍니다.
function getRandomNumber (min, max) {
min = Math.ceil(min);
max = Math.floor(max);
var a = Math.floor((Math.random() * (max - min +1)) + min) ;
return a
}
console.log(getRandomNumber (2, 10))
또한 Math.random()에는 무슨 숫자를 곱해도 범위가 0부터 정해지게 되므로, 마지막에 최소값 숫자를 더해주어야 최소값부터 최대값 사이의 랜덤값을 반환합니다.
예를 들어 최소값 2, 최대값 10일 때의 실행 코드를 살펴보자면,
(Math.random() * (10 - 2 + 1)) = 0 ~ 8.99999999...
이 다음 Math.floor로 소숫점 아래를 버립니다.
Math.floor((Math.random() * 9) = 0 ~ 8
마지막으로 최소값을 더하면,
Math.floor((Math.random() * 9) + 2) = 2 ~ 10
이렇게 2에서 10사이의 무작위 숫자를 반환하게 됩니다.