[ErrorHandling] 완전한 배열 셔플 -fisherYatesShuffle

Narcoker·2023년 6월 26일
0

ErrorHandling

목록 보기
9/14

문제 상황

퍼즐 게임을 만들고 있었는데 필요 기능 중,
게임을 초기화하면 펴즐 조각을 셔플해서 나열해야하는 기능이 있다.
imageSrcs 배열에 이미지 경로들을 저장하고 이를 섞어야했다.

사용했던 배열 셔플

const imageSrcs = [
  "./src/images/deer_1.jpg",
  "./src/images/deer_2.jpg",
  "./src/images/deer_3.jpg",
  "./src/images/deer_4.jpg",
  "./src/images/deer_5.jpg",
  "./src/images/deer_6.jpg",
  "./src/images/deer_7.jpg",
  "./src/images/deer_8.jpg",
  "./src/images/deer_9.jpg",
];

imageSrcs.sort(() => Math.random() - 0.5);

chatGPT 에 따르면 균등한 셔플이 안일어난다고한다.

fisherYatesShuffle

const fisherYatesShuffle = (array) => {
  let count = array.length;

  while (count) {
    let index = Math.floor(Math.random() * count--);
    let temp = array[count];
    [array[count], array[index]] = [array[index], array[count]];
  }

  return array;
};

쓰고나서 다시 보니 배열에 동일한 값이 없어서 피셔-에이츠 알고리즘을 사용안해도 될지도..?

profile
열정, 끈기, 집념의 Frontend Developer

0개의 댓글