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

JavaScript로 0~9 범위에서 중복 없는 난수 5개 생성하기 (첫 번째 숫자는 0 불가)

이번 문제에서는 정확히 다섯 개의 중복 없는 난수를 담은 배열을 생성하는 JavaScript 함수를 작성해야 합니다. 조건은 다음과 같습니다.

  • 모든 숫자는 0부터 9까지의 범위([0, 9]) 안에 있어야 합니다.
  • 배열의 첫 번째 숫자는 0이 될 수 없습니다.

구현 코드

다음은 위 조건을 만족하는 함수의 예시 코드입니다.

const fiveRandoms = () => {
   const arr = []
   while (arr.length < 5) {
      const random = Math.floor(Math.random() * 10);
      if (arr.indexOf(random) > -1){
         continue;
      };
      if(!arr.length && !random){
         continue;
      }
      arr[arr.length] = random;
   }
   return arr;
};
console.log(fiveRandoms());

코드 동작 원리

Math.floor(Math.random() * 10)을 사용하면 0부터 9 사이의 임의의 정수를 얻을 수 있습니다. while 루프를 통해 배열의 길이가 5가 될 때까지 반복하며, 각 단계에서 아래 두 가지 조건을 검사합니다.

  1. 중복 검사: indexOf()로 해당 숫자가 이미 배열에 존재하는지 확인하고, 존재한다면 continue로 건너뜁니다.
  2. 첫 자리 검사: 배열이 아직 비어 있고(!arr.length) 추출된 숫자가 0이라면(!random) 역시 건너뛰어 첫 번째 숫자가 0이 되지 않도록 합니다.

두 조건을 모두 통과한 숫자만 배열에 추가되기 때문에, 최종적으로는 조건을 만족하는 다섯 개의 고유한 난수 배열이 완성됩니다.

출력 결과

실행할 때마다 값은 달라지지만, 콘솔에는 다음과 같은 형태의 결과가 출력됩니다.

[ 9, 0, 8, 5, 4 ]