Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 n으로 나누어 떨어지는 난수 생성하는 방법

JavaScript 프로그래밍을 하다 보면 특정 숫자의 배수에 해당하는 난수가 필요한 경우가 있습니다. 예를 들어 격자(grid) 기반 UI를 만들거나, 일정 간격으로 값을 배치해야 하는 상황에서 유용하게 사용할 수 있습니다.

이번 글에서는 숫자 하나를 인수로 받아, 항상 그 숫자로 나누어 떨어지는 난수를 반환하는 JavaScript 함수를 작성해 보겠습니다.

구현 원리

핵심 아이디어는 간단합니다. 먼저 일반적인 난수를 생성한 뒤, 이를 원하는 숫자(n)로 나누고 반올림한 후 다시 n을 곱해주면 됩니다. 이렇게 하면 결과값이 항상 n의 배수가 됩니다.

코드 구현

실제 코드는 다음과 같습니다.

const num = 21;

// n의 배수인 난수를 생성하는 함수 (기본 상한값: 1,000,000)
const specialRandom = (num = 1, limit = 1000000) => {
   // 난수 생성
   const random = Math.random() * limit;
   // num으로 나누어 떨어지도록 반올림 처리
   const res = Math.round(random / num) * num;
   return res;
};

console.log(specialRandom(num));

동작 방식 살펴보기

위 코드의 동작 과정을 단계별로 살펴보겠습니다.

1단계: 난수 생성

Math.random()은 0 이상 1 미만의 실수를 반환합니다. 여기에 limit(기본값 1,000,000)를 곱하면 0부터 상한값 사이의 실수 난수를 얻을 수 있습니다.

2단계: 배수 단위로 조정

생성된 난수를 num으로 나눈 후 Math.round()로 반올림하면, 몇 번째 배수에 해당하는지를 나타내는 정수가 됩니다. 여기에 다시 num을 곱하면 최종 결과가 항상 num의 배수가 됩니다.

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다.

6006

출력 결과인 6006은 21로 나누어 떨어짐을 확인할 수 있습니다 (21 × 286 = 6006). 물론 Math.random()을 사용하기 때문에 실행할 때마다 결과값은 달라지지만, 어떤 값이 나오든 항상 입력한 숫자의 배수라는 점은 보장됩니다.

마무리

이 방법은 코드가 짧고 직관적이며, 추가 라이브러리 없이 순수 JavaScript만으로 구현할 수 있다는 장점이 있습니다. 필요에 따라 limit 매개변수를 조절하여 원하는 범위 내의 배수 난수를 손쉽게 생성할 수 있습니다.