random — 난수 생성

이 모듈은 의사 난수 생성기(PRNG)를 구현합니다. 이 PRNG는 32비트 Yasmarang 스타일 LCG입니다. 처음 임포트될 때 os.urandom() 이 사용하는 것과 동일한 하드웨어 소스에서 32비트 시드 하나를 가져오며, 이후의 모든 숫자는 해당 시드의 결정론적 함수입니다.

경고

출력은 암호학적으로 안전하지 않습니다. 알고리즘은 짧은 출력 시퀀스만으로도 예측 가능하며, 초기 시드는 32비트의 엔트로피만 담고 있습니다. 키 생성 자료, 세션 토큰, 비밀번호 솔트 또는 기타 보안에 민감한 용도에는 대신 os.urandom() 을 호출하세요.

참고

구간에는 다음 표기법이 사용됩니다:

  • ()는 개구간 괄호이며 끝점을 포함하지 않습니다. 예를 들어 (0, 1)은 0보다 크고 1보다 작음을 의미합니다. 집합 표기법으로는 (0, 1) = {x | 0 < x < 1}입니다.

  • []는 폐구간 괄호이며 모든 극한점을 포함합니다. 예를 들어 [0, 1]은 0 이상 1 이하를 의미합니다. 집합 표기법으로는 [0, 1] = {x | 0 <= x <= 1}입니다.

정수용 함수

random.getrandbits(n: int) int

n 개의 무작위 비트를 가진 정수를 반환합니다(0 <= n <= 32).

random.randint(a: int, b: int) int

[a, b] 범위의 무작위 정수를 반환합니다.

random.randrange(start: int, stop: int | None = None, step: int = 1) int

첫 번째 형식은 [0, stop) 범위에서 무작위 정수를 반환합니다. 두 번째 형식은 [start, stop) 범위에서 무작위 정수를 반환합니다. 세 번째 형식은 [start, stop) 범위에서 step 간격으로 무작위 정수를 반환합니다. 예를 들어 randrange(1, 10, 2) 를 호출하면 1부터 9까지(포함)의 홀수를 반환합니다.

부동소수점용 함수

random.random() float

[0.0, 1.0) 범위의 무작위 부동소수점 숫자를 반환합니다.

random.uniform(a: float, b: float) float

a <= b 인 경우 a <= N <= b 를 만족하고, b < a 인 경우 b <= N <= a 를 만족하는 무작위 부동소수점 숫자 N을 반환합니다.

기타 함수

random.seed(n: int | None = None, /) None

시드 n 으로 난수 생성기 모듈을 초기화합니다. n 은 정수여야 합니다. 인수가 전달되지 않거나(또는 None) 전달되면 os.urandom() 이 사용하는 것과 동일한 포트별 소스에서 PRNG가 다시 시드됩니다.

random.choice(sequence: Any) Any

sequence (튜플, 리스트 또는 첨자 연산을 지원하는 모든 객체)에서 무작위로 하나의 항목을 선택하여 반환합니다.