퍼즐 게임을 만들고 있었는데 필요 기능 중,
게임을 초기화하면 펴즐 조각을 셔플해서 나열해야하는 기능이 있다.
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 에 따르면 균등한 셔플이 안일어난다고한다.
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; };
쓰고나서 다시 보니 배열에 동일한 값이 없어서 피셔-에이츠 알고리즘을 사용안해도 될지도..?