NumPy 난수 생성 (random 모듈 사용)
안녕하세요, "Deep Python Studio"입니다! 오늘은 Python의 강력한 수치 계산 라이브러리인 NumPy에서 제공하는 random
모듈을 사용하여 난수를 생성하는 방법을 알아보겠습니다. 데이터 분석, 머신러닝, 시뮬레이션 등 다양한 응용 분야에서 난수는 필수적으로 사용됩니다. NumPy의 random
모듈은 이러한 작업을 효율적으로 수행할 수 있는 도구를 제공합니다.
1. NumPy random 모듈 소개
NumPy의 random
모듈은 난수를 생성하고 샘플링하는 데 유용한 함수들을 포함하고 있습니다. Python의 내장 random
모듈과 비교하여 다음과 같은 장점이 있습니다:
- 빠른 실행 속도
- 다양한 분포 지원 (정규분포, 이항분포, 푸아송분포 등)
- 다차원 배열 지원
사용 전 설치가 필요하다면, 아래 명령어로 NumPy를 설치할 수 있습니다:
pip install numpy
NumPy의 random
모듈을 사용하려면 아래와 같이 임포트합니다:
import numpy as np
2. 기본 난수 생성
2.1 균등분포 난수 생성
가장 기본적인 방법으로, [0.0, 1.0) 범위에서 균등분포 난수를 생성합니다:
# [0.0, 1.0) 범위의 난수 생성
random_value = np.random.random()
print(random_value)
여러 개의 난수를 생성하려면 다음과 같이 사용합니다:
# 5개의 난수 생성
random_values = np.random.random(5)
print(random_values)
2.2 임의의 정수 생성
특정 범위 내에서 정수를 생성하려면 randint
함수를 사용합니다:
# 0 이상 10 미만의 정수 생성
random_int = np.random.randint(0, 10)
print(random_int)
# 5개의 정수 생성
random_integers = np.random.randint(0, 10, size=5)
print(random_integers)
3. 다차원 배열에서 난수 생성
NumPy의 장점은 다차원 배열에서 난수를 생성할 수 있다는 것입니다.
3.1 균등분포 난수
# 2x3 배열 생성
random_array = np.random.random((2, 3))
print(random_array)
3.2 정수 난수
# 2x3 배열 생성 (정수)
random_int_array = np.random.randint(0, 10, size=(2, 3))
print(random_int_array)
4. 다양한 분포에서 난수 생성
NumPy는 다양한 확률 분포에서 난수를 생성하는 기능을 제공합니다.
4.1 정규분포 (Normal Distribution)
평균(mean)과 표준편차(std)를 지정하여 정규분포를 따르는 난수를 생성합니다:
# 평균 0, 표준편차 1인 정규분포에서 난수 5개 생성
normal_values = np.random.normal(0, 1, 5)
print(normal_values)
4.2 이항분포 (Binomial Distribution)
# 이항분포에서 난수 생성 (성공 확률 0.5, 시행 횟수 10)
binomial_values = np.random.binomial(n=10, p=0.5, size=5)
print(binomial_values)
4.3 푸아송분포 (Poisson Distribution)
# 푸아송분포에서 난수 생성 (평균 3)
poisson_values = np.random.poisson(3, 5)
print(poisson_values)
5. 시드 설정으로 재현성 확보
난수 생성 시 동일한 결과를 재현하려면 시드를 설정합니다:
# 시드 설정
np.random.seed(42)
random_values = np.random.random(5)
print(random_values)
같은 시드 값을 설정하면 실행할 때마다 동일한 난수가 생성됩니다.
6. 샘플링 및 셔플링
6.1 샘플링
배열에서 임의의 값을 샘플링하려면 choice
를 사용합니다:
# 배열에서 3개의 값을 샘플링
array = np.array([1, 2, 3, 4, 5])
sampled_values = np.random.choice(array, size=3, replace=False)
print(sampled_values)
6.2 셔플링
배열의 순서를 무작위로 섞으려면 shuffle
을 사용합니다:
# 배열 섞기
array = np.array([1, 2, 3, 4, 5])
np.random.shuffle(array)
print(array)
7. 마무리
이처럼 NumPy의 random
모듈은 다양한 방식으로 난수를 생성하고 샘플링할 수 있는 강력한 도구입니다. 이러한 기능은 데이터 분석, 머신러닝, 시뮬레이션 등 많은 분야에서 유용하게 활용됩니다.
감사합니다!
참고 자료
'Python NumPy' 카테고리의 다른 글
NumPy로 분포별 난수 생성하기 (0) | 2025.02.04 |
---|---|
NumPy 시드 고정 및 난수 배열 생성하기 (0) | 2025.02.03 |
NumPy 누적 함수 cumsum과 cumprod (0) | 2025.02.01 |
NumPy를 활용한 수학적 함수 적용 (0) | 2025.01.31 |
NumPy를 활용한 통계 계산 mean, median, std, var (0) | 2025.01.30 |