본문 바로가기
DataAnalytics/Python

[Python] NumPy 난수 생성 함수

by NeotenyAn 2025. 10. 2.

np.random 은 NumPy 에서 난수 생성에 사용되는 모듈입니다. Numpy 1.17 버전 이후로는 재현성 및 안정성 개선을 위해 np.random.Generator 클래스를 사용하는 것이 권장되며, 기존 방식인 np.random.rand 등은 레거시(legacy) 로 구분된다고 합니다.


■ 최신 Gnerator 기반 함수

난수 생성기 객체를 생성 후, 이 객체의 메서드를 호출하여 난수를 만듬

# 최신 Generator 방식
import numpy as np
rng = np.random.default_rng(seed=123) # 난수 생성기 객체 생성

# 난수 생성
print("균일 분포 실수 5개:", rng.random(5))
print("0~9 정수 5개:", rng.integers(0, 10, 5))
print("표준 정규 분포 난수 5개:", rng.normal(size=5))
print("배열에서 비복원 추출:", rng.choice(np.arange(10), size=3, replace=False))
  • rng.random(size)
    • [0.0, 1.0] 범위의 균일 분포에서 난수 실수 생성
  • rng.integers(low, high, size)
    • low 이상 high 미만의 정수 난수 생성
  • rng.normal(loc, scale, size)
    • 평균(loc)과 표준편차(scale)에 따라 정규 분포 난수 생성
  • rng.choice(a, size, replace)
    • 배열 a 에서 난수 size 개수만큼 선택 (replace=True 면 복원 추출, False 면 비복원 추출)
  • rng.permutation(x)
    • 배열 x 의 요소를 무작위로 섞거나, 정수 x 가 주어지면 np.arange(x) 를 섞음
  • rng.shuffle(x)
    • 주어진 배열 x 의 순서를 무작위로 섞음
  • rng.uniform(low, high, size)
    • low 이상 high 미만의 균일 분포에서 난수 실수 생성

■ Legacy Functions

# 레거시 방식
print("== 레거시 방식 (np.random 직접 사용) ==")
np.random.seed(123)
print("0~1 균일 분포 실수 5개:", np.random.rand(5))
print("0~9 정수 5개:", np.random.randint(0, 10, 5))
print("표준 정규 분포 난수 5개:", np.random.randn(5))
print("배열에서 비복원 추출:", np.random.choice(np.arange(10), size=3, replace=False))
  • np.random.seed(seed)
    • 난수 생성기의 시드를 고정하여 난수 생성 (재현 가능)
  • np.random.rand(d0, d1, ...)
    • 0 ~ 1 사이의 균일 분포에서 난수 배열 생성
  • np.random.randn(d0, d1, ...)
    • 표준 정규 분포(평균 0, 표준편차 1)를 따르는 난수 배열 생성
  • np.random.randint(low, high, size)
    • low 이상 high 미만의 정수 난수 배열 생성
  • np.random.choice(a, size, replace)
    • 주어진 배열 a 에서 난수 선택 (replace=True 면 복원 추출, False 면 비복원 추출)

'DataAnalytics > Python' 카테고리의 다른 글

[Python] 조건 관련 메서드  (0) 2025.10.01
[Python] PyTorch & PySpark  (0) 2025.10.01
[Python] df.clip() / np.clip / torch.clamp()  (0) 2025.10.01
[Python] 매직 명령어 : %%, %  (0) 2025.09.28