Python NumPy

NumPy 난수 생성 (random 모듈 사용)

PyExplorer 2025. 2. 2. 10:41
728x90

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 모듈은 다양한 방식으로 난수를 생성하고 샘플링할 수 있는 강력한 도구입니다. 이러한 기능은 데이터 분석, 머신러닝, 시뮬레이션 등 많은 분야에서 유용하게 활용됩니다.

감사합니다!


참고 자료

728x90