본문 바로가기
JAVASCRIPT

[JavaScript 피셔 예이츠 셔플 알고리즘 (Fisher-Yates Shuffle)]

by dancingcarrot 2023. 4. 27.


1. 피셔-에이츠 셔플 알고리즘 개요

피셔-에이츠 셔플(Fisher-Yates shuffle) 알고리즘은 배열의 요소를 무작위로 섞는 알고리즘 중 하나입니다. 랜덤 함수의 사용을 최소화하면서 요소를 섞는 효과적인 방법 중 하나로 알려져 있습니다. 

2. 피셔-에이츠 셔플 알고리즘 동작 방식


1. 배열의 마지막 요소부터 시작하여 첫 번째 요소까지 반복합니다.
2. 현재 위치(i)와 배열의 무작위 위치(j)를 선택합니다. (0 <= j <= i)
3. 현재 위치(i)와 무작위 위치(j)에 있는 요소를 교환합니다.
4. 1~3 과정을 배열의 첫 번째 요소까지 반복합니다.

3. 자바스크립트 코드 구현 예시

 

다음은 자바스크립트로 피셔-에이츠 셔플 알고리즘을 구현한 예시입니다.

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




댓글