정확히 두 개의 숫자를 요소로 가지며 하나의 범위를 나타내는 배열을 입력받는 JavaScript 함수를 작성해야 합니다.
이 함수는 인자로 전달된 범위 안에서 무작위 정수를 생성해야 하며, 최솟값과 최댓값 양쪽 끝 숫자도 포함되어야 합니다.
구현 원리
무작위 정수를 만들기 위해 Math.random() 메서드를 활용합니다. Math.random()은 0 이상 1 미만의 소수를 반환하므로, 원하는 범위의 크기인 (최댓값 − 최솟값 + 1)을 곱하고 Math.floor()로 소수점을 버린 뒤 최솟값을 더하면 됩니다. 여기서 +1을 해주는 이유는 최댓값 자체도 결과에 포함시키기 위함입니다.
구현 예제
const range = [5, 15];
const randomBetween = ([min, max]) => {
// +1을 더해 최댓값까지 포함되도록 함
const random = Math.random() * (max - min + 1);
const whole = Math.floor(random) + min;
return whole;
};
for(let i = 0; i < 10; i++){
console.log(randomBetween(range));
}실행 결과
콘솔에 출력되는 결과는 다음과 같습니다.
13 10 6 10 12 5 14 13 11 6
이 코드는 배열 비구조화 할당(destructuring)을 사용해 min과 max 값을 한 번에 추출하므로 코드가 간결합니다. 또한 Math.random()은 호출될 때마다 새로운 난수를 생성하기 때문에, 위 출력 결과는 프로그램을 실행할 때마다 달라질 수 있다는 점에 유의하세요.