Math.random()은 0부터 1 사이의 난수를 생성하는 메소드이다.
더 자세히 말하자면 0부터 0.99999... 사이의 수를 생성한다.
따라서 어떤 범위 사이의 랜덤 숫자를 생성하고 싶다면 여기에 적절한 값을 더하거나 곱해서 응용하면 된다.
다음은 상황별 예시이다.
1) 0~7 범위의 랜덤 난수 생성하기
Math.floor(Math.random() * 8);
- Math.random()으로 0부터 0.999999... 사이의 수가 생성된다.
- 여기에 8을 곱해서 0부터 7.999999... 사이의 수가 생성된다.
- Math.floor()로 소수점 이하를 절삭해서 0부터 7이하의 난수를 얻는다.
따라서 0 이상 n 이하의 수를 얻고 싶다면 Math.random()에 n보다 1 큰 수를 곱한 다음, 소수점을 자르면 된다.
Math.floor(Math.random() * (n + 1));
2) 1 이상 11 이하의 랜덤 난수 생성하기
최소 범위와 최대 범위 숫자가 뭐였는지 매번 떠올리려면 힘드므로 변수에 저장하자.
const min = 1;
const max = 11;
console.log(Math.floor(Math.random() * (max - min + 1)) + min);
- Math.random() 함수는 0부터 n 이하의 수밖에 못만든다. 따라서 0부터 min ~ max의 구간만큼 랜덤숫자를 구한 다음, 최종적으로 min을 더해줘서 최소 범위를 맞춰준다.
- Math.random() * (max + 1)은 0부터 max까지의 랜덤 난수를 생성할 수 있었다. 여기에 min을 빼서 0부터 min~max 구간만큼의 숫자를 구한다.
- min을 더해서 최소 범위를 맞춰준다. 0~(max-min)만큼의 숫자를 구했으므로 min을 더하면 min~max 의 랜덤 숫자를 구한게 된다.
3) 5 이상 60 이하의 랜덤 난수 생성하기
위에서 구한 공식에 대입해보면
Math.floor(Math.random() * (60 - 5 + 1)) + 5
이렇게 구할 수 있다.
'Front-end > Javascript' 카테고리의 다른 글
[JS] Javascript에서 Enum 사용하기 (0) | 2022.08.19 |
---|---|
[JS] 올림, 반올림, 내림 (ceil, round, floor) / 특정 자리수까지 0 채우기 (0) | 2022.08.08 |
[JS] onInput 이벤트 - 입력한 글자 실시간으로 화면에 출력하기 (0) | 2022.02.22 |
[JS] prototype 참고글 (0) | 2021.09.26 |
[JS] String 오브젝트에 굳이 toString()이 있는 이유 (0) | 2021.09.25 |