목록Algorithm (1)
Coding Memo
Shuffle 알고리즘 (Fisher-Yates Shuffle, Knuth Shuffle)
Fisher-Yates Shuffle (피셔 예이스 셔플) 알고리즘은 랜덤 값을 이용해, 배열을 uniform하게 섞을 수 있는 알고리즘이다. 한번 순환 (1 iterator)로 셔플을 완성할 수 있다. 매우 간단하다. 랜덤하게 숫자 하나를 뽑고 그 값을 인덱스로 치환한다음 그 값과 현재 값을 swap한다.// Fisher-Yates Shuffle Algorithmvoid Shuffle(std::vector& arr){ int n = arr.size(); for (int i = n - 1; i > 0; i--) { int j = rand() % (i + 1); swap(arr[i], arr[j]); }} 하나 주의할 점은 랜덤 값을 얻는 함수로 rand()를 사용했기 때문에 시드를 설정 해줘야 한..
etc
2024. 9. 26. 15:06