JavaScript에서 최솟값과 최댓값 사이의 의사 난수(pseudorandom number)를 반환하는 함수를 만들어 보겠습니다. 함수 이름은 createRandom으로 하고, 두 개의 인수 min과 max를 받으며, 이때 최댓값(max)은 범위에 포함되지 않습니다.
예제 코드
const min = 3;
const max = 9;
const createRandom = (min, max) => {
const diff = max - min;
const random = Math.random();
return Math.floor((random * diff) + min);
}
console.log(createRandom(min, max));코드 동작 원리
- 범위 계산: 먼저
max와min의 차이(diff)를 구합니다. 위 예제에서는 9 - 3 = 6이 됩니다. - 난수 생성:
Math.random()을 사용해 0 이상 1 미만의 무작위 소수를 생성합니다. - 범위 확장: diff와 random 값을 곱하면 0 이상 diff 미만(0 ~ 6) 사이의 난수를 얻을 수 있습니다.
- 기준점 이동: 여기에 min 값(3)을 더하면 최종적으로 min 이상 max 미만(3 ~ 9) 사이의 정수가 만들어집니다.
Math.floor()는 소수점 이하를 버려 정수로 만드는 역할을 하며, 덕분에 결과값은 항상 정수 형태로 반환됩니다.
실행 결과
콘솔에서 위 코드를 실행하면 다음과 같이 3 이상 9 미만의 임의의 정수가 출력됩니다.
6
이 방식은 Math.random()이 균등 분포를 따르기 때문에 범위 내 모든 정수가 거의 동일한 확률로 선택되는 장점이 있습니다. 게임 개발, 데이터 샘플링, 랜덤 UI 요소 생성 등 다양한 상황에서 활용할 수 있는 기본적인 패턴입니다.