안녕하세요, iOS 개발하는 루피입니다!
오늘은 Shuffle 알고리즘에 대해 간략하게 정리해보겠습니다.
Fisher-Yates
Fisher-Yates 셔플 은 유한 시퀀스의 무작위 순열을 생성하는 알고리즘 입니다 . 쉽게 말하면 이 알고리즘은 시퀀스를 셔플합니다.
동작원리
- 추출할 대상 인덱스 j를 랜덤하게 선택
- arr[i]와 arr[j]를 swap
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in 0...9 {
let j = Int.random(in: i...9)
let origin = arr[i]
arr[i] = arr[j]
arr[j] = origin
}
// 실행결과: [6, 3, 7, 8, 10, 5, 1, 2, 9, 4] -> 매번 다른 결과 출력됨
출처
오늘도 화이팅입니다!
'Algorithm' 카테고리의 다른 글
| [Algorithm] BOJ : 알파벳 개수 (1) | 2025.01.20 |
|---|---|
| [Algorithm] BOJ : 일곱 난쟁이 (1) | 2025.01.20 |
| [Algorithm] BOJ : 유기농 배추 (0) | 2024.12.20 |
| [Algorithm] BOJ 13458 : 시험 감독 (0) | 2024.12.20 |
| [Algorithm] BOJ 10986 : 나머지 합 (1) | 2024.12.03 |