random 모듈은 「난수 생성·무작위 선택·셔플링」을 다루는 표준 라이브러리입니다.
게임·시뮬레이션·테스트·간단한 통계에 자주 쓰입니다.
기본 함수들.
random.random() — 0.0 이상 1.0 미만의 실수.
random.randint(1, 10) — 1~10 사이의 정수(양 끝 포함).
random.uniform(1.5, 3.5) — 그 범위의 실수.
random.choice(["가위", "바위", "보"]) — 리스트에서 하나 무작위 선택.
여러 개 선택과 셔플.
random.sample([1,2,3,4,5], 3) — 중복 없이 3개 선택.
random.choices([1,2,3], k=10) — 중복 허용 10개 선택(가중치 weights 옵션도 가능).
random.shuffle(my_list) — 리스트의 순서를 무작위로 섞음(원본 변경).
재현 가능한 무작위.
시뮬레이션·디버깅에서 「이번 실행과 다음 실행의 결과가 같길」 원할 때, random.seed(42)를 호출해 시드를 고정합니다.
같은 시드 + 같은 호출 순서면 같은 결과가 보장됩니다.
주의: random은 「약한 무작위」입니다.
비밀번호 생성·암호 토큰·세션 키 같은 보안 용도에는 부적합합니다.
보안 용도에는 「secrets」 모듈을 써야 합니다 — secrets.token_urlsafe(16) 같은 식.
일반 용도와 보안 용도를 분명히 구분하는 게 중요합니다.
한 줄 요약
random 모듈은 난수·무작위 선택·셔플링을 다룹니다.
seed로 재현 가능, sample/choices로 여러 개 선택.
보안 용도에는 random 대신 secrets 모듈을 써야 합니다.
더 알아볼 것
- secrets — 암호학적 안전 난수
- numpy.random — 더 빠르고 풍부한 난수
- Mersenne Twister 알고리즘