개발로그/Python
random.choice()와 random.shuffle()은 비슷해 보이지만 목적이 완전히 다르다
그리너리디밸로퍼
2025. 3. 15. 13:27
✅ 핵심 차이 요약
함수 이름 / 설명 / 목적
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