셔플(Shuffle, 섞기)은 데이터를 무작위(Random)로 섞는 알고리즘입니다.
Fisher–Yates Shuffle
알고리즘이 대표적입니다. Javascript(자바스크립트)와 Python(파이썬)으로 만들어 봤습니다.
(Python은 random.shuffle
메서드가 있기 때문에 만들어 쓸 필요는 없습니다.)
Javascript 셔플
function shuffle(ar) {
for (var i = ar.length - 1; i > 0; i--) {
var r = Math.floor(Math.random() * (i + 1)); // 0 ~ i
[ar[i], ar[r]] = [ar[r], ar[i]];
}
}
var ar = [1, 2, 3, 4, 5, 6, 7];
shuffle(ar);
console.log(ar);
Python 셔플
import random
def shuffle(ar):
for i in range(len(ar)-1, 0, -1):
r = random.randint(0, i) # 0 ~ i
ar[i], ar[r] = ar[r], ar[i]
ar = [1, 2, 3, 4, 5, 6, 7]
shuffle(ar)
print(ar)