파이썬 random 모듈은 파이썬에서 난수를 다루기 위한 모듈로, 다양한 메소드를 제공합니다. 무작위 정렬, 무작위 숫자 생성, 무작위 샘플링 등에 활용할 수 있습니다.
파이썬 random 모듈에 사용되는 알고리즘은 메르센 트위스터(Mersenne Twister) 알고리즘입니다. 메르센 트위스터는 현존하는 가장 광범위하게 테스트된 난수 생성기 중 하나입니다. 그러나 완전히 결정적이기 때문에 모든 목적에 적합하지 않으며 암호화 목적에도 전혀 적합하지 않다는 점에 유의해야 합니다.
자주 사용되는 파이썬 random 메소드
random.randint(a, b)
: a 이상 b 이하의 정수 난수를 생성합니다.
import random
rand_int = random.randint(1, 10)
print(rand_int)
random.randrange(start, stop, step)
:주어진 범위 내에서 step 간격으로 난수를 생성합니다
start
: 시작값으로, 생성된 난수는 이 값 이상이어야 합니다.stop
: 종료값으로, 생성된 난수는 이 값 미만이어야 합니다.step
(옵션): 난수 사이의 간격을 나타내며, 기본값은 1입니다.
# 0 이상 10 미만의 범위에서 2 간격으로 난수를 생성
rand_num_step = random.randrange(0, 10, 2)
print(rand_num_step)
random.choice(seq)
: 시퀀스(리스트, 튜플 등)에서 임의의 요소를 선택합니다.
import random
my_list = [1, 2, 3, 4, 5]
rand_choice = random.choice(my_list)
print(rand_choice)
random.shuffle(seq)
: 시퀀스 내의 요소들을 무작위로 섞습니다.
import random
my_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)
print(my_list)
random.sample(seq, k)
: 시퀀스에서 중복되지 않는 k개의 요소를 무작위로 선택합니다.
import random
my_list = [1, 2, 3, 4, 5]
rand_sample = random.sample(my_list, 3)
print(rand_sample)
random.random()
: 0 이상 1 미만의 난수를 생성합니다.
import random
rand_num = random.random()
print(rand_num)
random.uniform(a, b)
: a 이상 b 미만의 실수 난수를 생성합니다.
import random
rand_float = random.uniform(1.5, 3.5)
print(rand_float)
난수의 초깃값 설정
random
모듈의 seed()
함수는 난수 생성에 사용되는 초기값을 설정하는 데 사용됩니다. 이를 통해 동일한 초기값을 설정하면 프로그램을 여러 번 실행해도 항상 같은 난수 시퀀스가 생성됩니다.
import random
# seed 값을 설정하지 않은 경우
rand1 = random.randint(1, 100)
print("Random 1:", rand1)
rand2 = random.randint(1, 100)
print("Random 2:", rand2) # rand1과 rand2가 다른 난수
# seed 값을 설정한 경우
random.seed(42)
rand3 = random.randint(1, 100)
print("Random 3:", rand3)
random.seed(42)
rand4 = random.randint(1, 100)
print("Random 4:", rand4) # rand3과 rand4가 동일한 결과
참고하면 좋은 글
random — Generate pseudo-random numbers — Python 3.12.2 documentation