상위 목록: 하위 목록: 작성 날짜: 읽는 데 11 분 소요

난수 모듈

Python에서는 난수 모듈을 이용하여 특정한 순서나 규칙을 가지지 않은 무작위의 숫자를 발생시키는 함수입니다.

임의의 숫자확률이 필요한 알고리즘이나 코드에 사용합니다.


import random

상단에 import random를 사용하여 난수 모듈을 포함시킵니다.

난수 함수의 사용방법은 random.*을 이용하여 사용이 가능합니다.


import random

print(random.random())
print(random.uniform(3.5, 3.6))
print(random.randrange(10))
print(random.randrange(3, 7))
print(random.randint(5, 9))
결과
0.4383375274996887
3.528242770358927
0
6
8


random.*을 이용하여 무작위의 숫자를 발생시킵니다.

특정 범위를 갖는 무작위 값을 반환하거나, 특정 분포의 형태를 갖는 값을 생성할 수도 있습니다.


함수 의미 반환 형식
random() 0.0 <= x < 1.0 실수형
unform(a, b) a <= x < b 실수형
randrange(a) 0 <= x < a 정수형
randrange(a, b) a <= x < b 정수형
randint(a, b) a <= x <= b 정수형



목록을 사용하는 난수 함수

import random

L = [1, 10, 100, 1000]

print(random.choice(L))
print(random.sample(L, 2))
random.shuffle(L)
print(L)
결과
100
[1000, 100]
[100, 1000, 10, 1]

random.*을 이용하여 목록(List)의 값을 추출하거나 변경할 수 있습니다.


함수 의미 반환 형식
  choice(L) 임의의 원소값 하나를 반환   원소의 데이터 형식 
sample(L, n) 임의의 원소값 n개를 반환 목록
shuffle(L) 목록 무작위 재배열 목록



난수 상태 설정

import random

random.seed(0)

state = random.getstate()
print(random.sample(range(10), k=5))
print(random.sample(range(10), k=5))
random.setstate(state)
print(random.sample(range(10), k=5))
결과
[6, 9, 0, 2, 4]
[7, 6, 4, 3, 2]
[6, 9, 0, 2, 4]

난수 함수가 생성하는 데이터는 현재 시스템 시간을 기준으로 무작위의 숫자값을 반환합니다.

그러므로, 실행할 때마다 결괏값이 달라지게 됩니다.

하지만, 발생 기준값을 동일하게 맞춘다면 항상 같은 난수를 생성하게 됩니다.

시드값 설정 함수(random.seed)로 기준값을 설정할 수 있습니다.

random.seed(시드값)을 통해 동일한 난수를 발생시킬 수 있습니다.

만약, 시드값에 None을 입력하거나 작성하지 않을 경우 현재 시간으로 설정됩니다.


시드값은 프로그램 단위로 적용되며, 코드의 줄 단위로는 일련의 규칙을 따라가게 됩니다.

즉, 첫 번째, 두 번째, … N 번째의 전체 패턴은 같아지지만, 첫 번째와 두 번째의 값은 서로 다르게 됩니다.

첫 번째와 두 번째 또는 임의의 난수 패턴을 동일하게 맞추려면, 난수 생성 상태를 저장하고 불러오는 방법이 있습니다.

난수 상태 가져오기 함수(random.getstate)를 통해 난수가 발생 될 때의 생성 조건을 가져옵니다.

난수 상태 적용하기 함수(random.setstate)로 저장한 난수 상태를 적용할 수 있습니다.

난수 상태를 가져온 뒤, 특정 구문에 적용한다면 언제 실행하더라도 항상 동일한 결과를 얻을 수 있습니다.

댓글 남기기