본문 바로가기

언어/Python

[ Python ] Random 패키지 사용하기

반응형

파이썬의 random 모듈은 난수를 생성하고 다양한 난수 관련 기능을 제공하는 표준 라이브러리입니다. 이 모듈은 임의의 숫자, 시퀀스, 요소 등을 생성하거나 선택하는 데 유용하며, 다양한 확률 분포에 따른 값도 생성할 수 있습니다.

주요 기능 및 사용법

  1. 기본적인 난수 생성:
    • random.random(): 0.0 이상 1.0 미만의 부동소수점 난수를 반환합니다.
import random

value = random.random()
print(value)  # 예: 0.37444887175646646
  1. 정수 난수 생성:
    • random.randint(a, b): a와 b 사이의 정수 난수를 반환합니다. 여기서 a와 b는 모두 포함됩니다.
    • random.randrange(start, stop[, step]): start와 stop 사이에서 step 간격으로 정수 난수를 반환합니다. stop은 포함되지 않습니다.
import random

value1 = random.randint(1, 10)  # 1과 10 사이의 정수 반환
value2 = random.randrange(0, 10, 2)  # 0과 9 사이의 짝수 반환 (0, 2, 4, 6, 8 중 하나)

print(value1)  # 예: 7
print(value2)  # 예: 4
  1. 시퀀스에서 임의의 요소 선택:
    • random.choice(seq): 시퀀스(seq)에서 임의의 요소를 하나 선택하여 반환합니다.
    • random.choices(population, weights=None, k=1): 가중치를 고려하여 시퀀스에서 k개의 요소를 반환합니다.
    • random.sample(population, k): 시퀀스에서 중복 없이 k개의 요소를 임의로 선택하여 반환합니다.
    • random.shuffle(x): 시퀀스 x의 요소들을 제자리에서 무작위로 섞습니다.
import random

items = ['apple', 'banana', 'cherry']

chosen = random.choice(items)
sample = random.sample(items, 2)
random.shuffle(items)

print(chosen)  # 예: 'banana'
print(sample)  # 예: ['cherry', 'apple']
print(items)   # 예: ['cherry', 'banana', 'apple'] (순서는 무작위)
  1. 임의의 부동소수점 수 생성:
    • random.uniform(a, b): a와 b 사이의 부동소수점 난수를 반환합니다. a와 b는 포함됩니다.
    • random.triangular(low, high, mode): 삼각 분포를 따르는 부동소수점 난수를 반환합니다.
import random

value1 = random.uniform(1.0, 10.0)  # 1.0과 10.0 사이의 난수
value2 = random.triangular(0, 10, 5)  # 0과 10 사이, 모드가 5인 삼각분포 난수

print(value1)  # 예: 7.235071973812594
print(value2)  # 예: 5.376074541101357
  1. 특정 확률 분포에서 난수 생성:
    • random.gauss(mu, sigma): 평균이 mu, 표준편차가 sigma인 가우스(정규) 분포 난수를 반환합니다.
    • random.expovariate(lambd): lambd가 레이트 파라미터인 지수분포 난수를 반환합니다.
    • random.betavariate(alpha, beta): 베타 분포에서 난수를 반환합니다.
    • random.gammavariate(alpha, beta): 감마 분포에서 난수를 반환합니다.
import random

value1 = random.gauss(0, 1)  # 평균 0, 표준편차 1인 정규분포 난수
value2 = random.expovariate(1.5)  # 레이트 파라미터가 1.5인 지수분포 난수

print(value1)  # 예: -0.8492983884294251
print(value2)  # 예: 0.39722326244942855
  1. 시드 설정:
    • random.seed(a=None, version=2): 난수 생성기의 시드를 설정합니다. 동일한 시드를 사용하면 동일한 난수 시퀀스를 생성할 수 있습니다. 시드를 설정하면 재현 가능한 결과를 얻을 수 있습니다.
import random

random.seed(42)
print(random.random())  # 시드를 동일하게 하면 항상 동일한 값이 나옴

random.seed(42)
print(random.random())  # 예: 0.6394267984578837 (항상 동일한 값)
  1. 시뮬레이션 및 테스트:
    • random 모듈은 확률 시뮬레이션, 게임, 통계 분석 및 기타 테스트 시나리오에서 사용됩니다. 예를 들어, 주사위 굴리기 시뮬레이션, 카드 덱 섞기, 랜덤 샘플링 등이 있습니다.

요약

파이썬의 random 모듈은 다양한 종류의 난수를 생성하고, 시퀀스에서 무작위 요소를 선택하거나 섞을 수 있는 기능을 제공합니다. 이러한 기능들은 확률 시뮬레이션, 통계 분석, 게임 개발, 테스트 자동화 등 여러 응용 분야에서 유용하게 사용될 수 있습니다.

반응형