자료구조
피셔 에이츠 셔플(Fisher-Yates-Shuffle) 알고리즘
HSH12345
2023. 4. 13. 20:11
피셔 에이츠 셔플 알고리즘은 주어진 배열을 무작위로 섞는 알고리즘으로 배열의 마지막 원소부터 원소들을 앞으로 하나씩 선택하여 교환하여 배열의 원소를 섞는 알고리즘이다. 현재는 프로그래밍 언어의 기능을 활용하여 원하는 원소들의 위치를 교환하여 간소화해 사용할 수 있다.
해당 알고리즘의 동작방식은 아래 이미지를 보면 쉽게 이해할 수 있다.
Unity-C# 스크립트에서의 구현
for (int i = 0; i < cnt; i++)
{
int idx = Random.Range(i, cnt);
int temp = list[idx];
list[idx] = list[i];
list[i] = temp;
}