파이썬 random : 랜덤 (난수) 생성

파이썬 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

Leave a Comment

목차