본문 바로가기
자바스크립트

[JAVASCRIPT] 배열 내의 요소 무작위로 섞기(shuffle)

by jaewooojung 2019. 11. 2.

JAVASCRIPT


배열 랜덤 섞기 Shuffle

자바스크립트에서 배열 내의 원소를 무작위로 섞는 예시입니다. Math.random 메서드를 활용하여 배열의 요소들을 순회해야 합니다.

 

shuffle 함수입니다.

const shuffleArray = array => {
  for (let i = 0; i < array.length; i++) {
    let j = Math.floor(Math.random() * (i + 1)); // j는 0이상 i이하의 수
    [array[i], array[j]] = [array[j], array[i]]; // i번째 요소와 j번째 요소의 값을 변경
  }
  return array;
};

 

 

i번째와 j번째를 바꾸는(swap) 코드는 아래와 같습니다.

const temp = array[i];
array[i] = array[j];
array[j] = temp;

 

 

실행결과입니다.

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const shuffleArray = array => {
  for (let i = 0; i < array.length; i++) {
    let j = Math.floor(Math.random() * (i + 1));
    [array[i], array[j]] = [array[j], array[i]];
  }
  return array;
};

shuffleArray(arr);

console.log(arr); // [ 7, 5, 10, 4, 1, 3, 2, 9, 8, 6 ]
console.log(arr); // [ 6, 3, 8, 4, 9, 7, 1, 5, 10, 2 ]
console.log(arr); // [ 10, 2, 8, 1, 5, 6, 9, 7, 4, 3 ]
console.log(arr); // [ 6, 8, 5, 7, 1, 10, 9, 2, 4, 3 ]
console.log(arr); // [ 4, 10, 1, 3, 7, 2, 5, 8, 6, 9 ]


        
답변을 생성하고 있어요.