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 |