본문 바로가기
Python/문법

Python random 모듈 가이드

by ssury94 2025. 1. 21.

프로그래밍을 하다 보면 무작위 값을 생성하거나 랜덤하게 선택해야 하는 상황이 종종 있습니다. 파이썬에서는 random 모듈을 사용하여 이러한 작업을 쉽게 처리할 수 있는데요, 이번 글에서는 random 모듈의 주요 기능과 사용법을 친절히 알려드리겠습니다! ✨


1. random 모듈이란? 🤔

random 모듈은 파이썬 표준 라이브러리의 일부로, 난수를 생성하거나 무작위 작업을 처리할 수 있는 다양한 함수를 제공합니다. 간단한 예제부터 고급 기능까지 폭넓게 지원하므로 많은 개발자들에게 사랑받고 있습니다. 💖

사용하기 위해서는 먼저 ramdom 모듈을 임포트 해야합니다.

import random

2. 주요 함수와 사용법 🛠️

2.1 random.random() - 0.0 이상 1.0 미만의 난수 생성 🌟

print(random.random())  # 예: 0.3745401188473625
  • 특징: 0.0 이상 1.0 미만의 실수(float) 난수를 반환합니다.
  • 활용 예: 확률 계산, 정규화된 값 생성 등.

2.2 random.randint(a, b) - 특정 범위의 정수 생성 🎯

print(random.randint(1, 10))  # 예: 7
  • 특징: a와 b(둘 다 포함) 사이의 정수(int)를 반환합니다.
  • 활용 예: 주사위 굴리기, 난수 기반의 ID 생성 등.

2.3 random.uniform(a, b) - 특정 범위의 실수 생성 🔢

print(random.uniform(1.5, 7.5))  # 예: 3.847213
  • 특징: a와 b 사이의 실수(float) 난수를 반환합니다.
  • 활용 예: 물리적 시뮬레이션, 소수점 기반 계산 등.

2.4 random.choice(seq) - 시퀀스에서 무작위 선택 🍀

items = ['apple', 'banana', 'cherry']
print(random.choice(items))  # 예: 'banana'
  • 특징: 리스트, 문자열 등 시퀀스에서 무작위 요소를 반환합니다.
  • 활용 예: 무작위 상품 추천, 게임 룰렛 등.

2.5 random.shuffle(seq) - 리스트 섞기 🔀

numbers = [1, 2, 3, 4, 5]
random.shuffle(numbers)
print(numbers)  # 예: [3, 1, 4, 5, 2]
  • 특징: 리스트의 순서를 무작위로 섞습니다(원본 리스트를 변경하여 저장합니다.)
  • 활용 예: 카드 섞기, 순서 랜덤화 등.

2.6 random.sample(population, k) - 중복 없이 샘플 추출 ✂️

numbers = [1, 2, 3, 4, 5]
print(random.sample(numbers, 3))  # 예: [4, 1, 3]
  • 특징: 리스트에서 중복되지 않은 k개의 요소를 추출합니다.
  • 활용 예: 추첨, 복권 번호 생성 등.

2.7 random.choices(population, weights=None, k=1) - 중복 허용 샘플 추출 🎰

items = ['apple', 'banana', 'cherry']
print(random.choices(items, weights=[1, 2, 1], k=5))  # 예: ['banana', 'banana', 'apple', 'cherry', 'banana']
  • 특징: 중복을 허용하며 k개의 요소를 추출합니다. 선택 확률을 weights로 조정 가능.
  • 활용 예: 가중치 기반 추첨, 시뮬레이션.

2.8 random.seed(value) - 난수 재현 가능 🔒

random.seed(42)
print(random.random())  # 항상 같은 결과: 0.6394267984578837
  • 특징: 난수 생성기의 초기값(Seed)을 설정하여 동일한 난수 생성 결과를 재현합니다.
  • 활용 예: 디버깅, 테스트 환경에서 동일한 결과 생성.

3. 보안이 중요한 경우? secrets 모듈을 사용하세요! 🔐

random 모듈은 암호학적으로 안전하지 않으므로, 보안이 필요한 작업(예: 비밀번호 생성)에는 secrets 모듈을 사용해야 합니다.

import secrets

print(secrets.token_hex(16))  # 예: 'f6c20c8b9a2d4c4f8e7e892e8af3e4bc'

마무리 ✍️

파이썬의 random 모듈은 간단한 난수 생성부터 고급 샘플링까지 다양한 작업을 수행할 수 있어, 알고리즘 구현과 시뮬레이션에 유용하게 쓰입니다. 이제 여러분도 무작위 데이터 처리를 자유롭게 다룰 수 있겠죠? 😎

더 궁금한 점이 있다면 댓글로 남겨주세요. 다음 글에서 만나요! 🚀