본문 바로가기
개발로그/Python

random.choice()와 random.shuffle()은 비슷해 보이지만 목적이 완전히 다르다

by 그리너리디밸로퍼 2025. 3. 15.

✅ 핵심 차이 요약

 함수 이름  / 설명 / 목적

random.choice(list) 리스트에서 단 하나의 항목 무작위 선택 "하나만 고를 때"
random.shuffle(list) 리스트 항목 전체 순서를 랜덤 섞음 (in-place) "여러 개를 모두 무작위 순서로 쓰고 싶을 때"

✅ 왜 random.shuffle()을 쓰는가?

사용하려는 목적 예시.

get_random_audio_from_drive_path() 안에서 mp3 파일 리스트를 가져온 후
**"재생 가능한 파일을 먼저 찾고 그 중 하나를 고르려는 구조"** 

 

random.choice(files):

python
복사편집
selected = random.choice(files)

➡ 파일 리스트가 순차일 경우, 항상 choice()가 처음 항목만 선택할 가능성 ↑
(= 일부 앞부분의 파일만 반복 선택 될 확률이 높다)

➡ 추가로 파일이 존재하는지 검사

random.shuffle(files):

python
복사편집
random.shuffle(files) for file in files:
  if 파일이 존재하는지 유효성 검사조건: return file

➡ 순서를 먼저 섞고, 처음으로 “사용 가능한 파일”이 발견되면 바로 선택
= 공정하게 무작위 mp3가 선택됨
= 반복성/불균형 ↓


✅ 정리하면:

상황에 따른  추천 방식

리스트 중 단 하나 선택 random.choice()
리스트 전체에서 조건부로 순회 → 처음 사용 가능한 항목 선택 random.shuffle() + for 순회

📌 리스트에 담겨있는 데이터가 순서를 가지고있는 또는 순차적인 것이라면 shuffle방식 추천. 

728x90

댓글