[IT강의실] 음악 '랜덤 재생'과 '셔플 재생'은 무슨 차이가 있나?

이문규 munch@itdonga.com

[IT동아]

멜론이나 애플뮤직 같은 음악 스트리밍 서비스를 이용한다면, 음악 재생 방식인 '랜덤(random) 재생'이나 '셔플(shuffle) 재생' 기능을 종종 사용할 것이다. 참고로, 셔플의 뜻 중 하나는 '(카지노 등에서 카드를) 섞다'이다.

랜덤 재생은 랜덤의 단어 뜻 그대로, 재생목록에 있는 곡을 무작위 순서로 뽑아 재생하는 방식이다. 셔플 재생도 랜덤 재생과 동일하게 무작위로 재생하지만, 랜덤 재생의 맹점을 보완한 무작위 재생 방식이다.

이런 무작위 순서 재생에는 순서를 잘 섞고 같은 노래가 반복 재생되지 않게 하는 고도의 알고리즘이 필요한데, 각 서비스 제공사마다 고유의 랜덤/셔플 알고리즘을 개발, 적용하고 있다.

멜론의 셔플 재생(왼쪽), 스포티파이의 셔플 재생(오른쪽)
멜론의 셔플 재생(왼쪽), 스포티파이의 셔플 재생(오른쪽)

최근에는 스트리밍 플레이어 대부분이 '랜덤'보다는 '셔플'로 표기하고 있는데, 기존의 랜덤 재생에는 앞서 언급한 맹점이 존재하기 때문이다.

예를 들어, 재생목록에 10곡의 노래가 들어있고, 이를 랜덤 재생으로 듣는다고 가정하자. 단순한 랜덤 재생은 그야말로 아무 곡이나 무작위로 골라 재생하기에, 이미 재생된 곡이 몇 번이고 다시 재생될 수 있다.

이에 좀더 개선된, 진보한 랜덤 재생 알고리즘이 필요해졌는데, 그 중 대표적인 랜덤 알고리즘이 '피셔-예이츠 셔플(Fisher-Yates shuffle)' 방식이다. 컴퓨터 프로그래밍을 공부한 이에게는 대단히 익숙한 알고리즘이다.

알고리즘을 개발한 두 개발자의 이름(로날드 피셔+프랭크 예이츠)을 딴 이 랜덤 재생 방식은, 무작위 선정에 있어 중복/반복이 최대한 발생하지 않도록 하는 원리다.

위의 예로, 10곡의 노래 중 무작위 선정해 한 곡을 재생했다면, 다음 재생 곡으로는 재생 중인 곡을 제외한 나머지 9곡 중에서 무작위로 선정한다. 마찬가지로, 두 번째 곡이 재생되면, 나머지 8곡 중에서 무작위 선정하고, 이 과정을 반복하며 앞서 재생된 곡이 다시 재생되지 않도록 유지하는 것이다.

재생된 곡은 재생목록에서 제외된다
재생된 곡은 재생목록에서 제외된다

이처럼 '10곡이면 10곡', '100곡이면 100곡'이라 정해진 범위에서 랜덤/셔플 재생하면, 같은 곡이 중복/반복 재생될 가능성은 이론적으로 존재하지 않겠지만... 실제로 랜덤 재생하다 보면, 들었던 노래가 또 재생되는 듯하고, 순서 역시 왠지 랜덤이 아닌 듯한 느낌도 받는다.

이는 아마도, 재생 목록의 10곡 또는 100곡을 모두 듣지 않은 상태에서(즉 정주행하지 않은 상태에서), 다른 곡을 검색해 들었다거나, 스트리밍 앱을 종료했다가 다시 실행했기 때문일 것이다. 이러면 랜덤/셔플 알고리즘이 사용자의 재생 상황을 감지하지 못하고, 랜덤/셔플 재생 과정을 처음부터 다시 시작하게 된다. 즉, 피셔-예이츠 셔플이라도 직전에 들었던 곡이 또 재생된 것 같은 기분은 결국 괜히 드는 게 아니다.

랜덤/셔플 알고리즘은 스트리밍 서비스마다 약간 다르기도 하다. 시대의 흐름, 사용자의 요구에 맞춰 알고리즘을 각 제공사가 고유의 방식으로 지속 개발, 적용하고 있기 때문이다. 어쨌든 목적은 '어떻게 하면 사용자가 좀더 만족할 랜덤/셔플 방식을 제공하는가'로 동일하다.

최근에는 콘텐츠의 '개인화' 흐름에 따라, 사용자의 음악 취향이나 성향, 재생 패턴, '좋아요' 반응 등의 개인 데이터를 반영한(개인화된) 랜덤/셔플 추천 알고리즘을 개발, 발전시키는 데 우선 순위를 두고 있다.

글 / IT동아 이문규 (munch@itdonga.com)

IT동아의 모든 콘텐츠(기사)는 Creative commons 저작자표시-비영리-변경금지 라이선스에 따라 이용할 수 있습니다.
의견은 IT동아(게임동아) 페이스북에서 덧글 또는 메신저로 남겨주세요.