난수(random number)는 게임 개발, 시뮬레이션, 소프트웨어 테스팅, 보안 및 개인정보 보호 애플리케이션 등 다양한 분야에서 널리 활용됩니다. Python은 이러한 난수 생성을 위해 random 모듈을 기본으로 제공하며, 자주 사용되는 핵심 함수들을 포함하고 있습니다.
Python 주요 난수 함수
| 번호 | 함수 및 설명 |
|---|---|
| 1 | choice(seq) 리스트(list), 튜플(tuple), 문자열(string)과 같은 시퀀스에서 임의의 요소 하나를 무작위로 선택하여 반환합니다. |
| 2 | randrange([start] stop [,step])range(start, stop, step) 범위 내에서 임의로 선택된 요소를 반환합니다. 시작 값과 증분(step)은 선택적으로 지정할 수 있습니다. |
| 3 | random() 0 이상 1 미만(0 ≤ r < 1) 범위의 임의의 실수(float) r을 반환합니다. |
| 4 | seed([x]) 난수 생성에 사용되는 정수형 시작 값을 설정합니다. 다른 random 모듈 함수를 호출하기 전에 이 함수를 먼저 호출하면 재현 가능한(reproducible) 난수 시퀀스를 얻을 수 있습니다. 반환값은 None입니다. |
| 5 | shuffle(lst) 리스트의 항목들을 제자리(in-place)에서 무작위로 섞습니다. 원본 리스트가 변경되며, 반환값은 None입니다. |
| 6 | uniform(x, y) x 이상 y 미만(x ≤ r < y) 범위의 임의의 실수(float) r을 반환합니다. |
간단한 사용 예제
import random
print(random.choice(['사과', '바나나', '체리'])) # 리스트에서 임의 선택
print(random.randrange(1, 10)) # 1~9 사이의 정수
print(random.random()) # 0.0 ~ 1.0 미만 실수
print(random.uniform(2.5, 5.0)) # 2.5 ~ 5.0 사이 실수
nums = [1, 2, 3, 4, 5]
random.shuffle(nums) # 리스트 항목 섞기
print(nums)이처럼 Python의 random 모듈은 간단한 함수 호출만으로 다양한 형태의 난수를 손쉽게 생성할 수 있도록 도와줍니다. 단, 보안이 중요한 용도(예: 비밀번호 생성, 인증 토큰)에는 예측 가능성이 없는 secrets 모듈을 사용하는 것이 권장됩니다.