준비하는 대학생

[NumPy] random 난수 생성 본문

Programming/Machine learning

[NumPy] random 난수 생성

Bangii 2023. 3. 16. 10:07

1. 난수 생성의 기본: random.rand()와 random.randn()

NumPy의 random 모듈에서 가장 기본적인 난수 생성 함수는 random.rand()와 random.randn()입니다.

1.1. random.rand()

random.rand() 함수는 0과 1 사이의 균일 분포(uniform distribution)를 따르는 난수를 생성합니다. 인자로는 원하는 배열의 크기를 지정합니다.

예시

import numpy as np

# 0과 1 사이의 난수 생성
rand_num = np.random.rand(3, 3)
print(rand_num)

결과

[[0.42656567, 0.707024  , 0.93653248],
 [0.1935818 , 0.56052649, 0.59793347],
 [0.83235891, 0.84720889, 0.17890702]]

1.2. random.randn()

random.randn() 함수는 평균이 0이고 표준편차가 1인 정규 분포(가우시안 분포)를 따르는 난수를 생성합니다. 인자로는 원하는 배열의 크기를 지정합니다.

예시

import numpy as np

# 정규 분포를 따르는 난수 생성
rand_num = np.random.randn(3, 3)
print(rand_num)

결과

[[-0.28054502,  1.13074535,  0.7533984 ],
 [ 0.31915416, -0.1691869 , -1.37088648],
 [ 0.74561863, -1.59523572, -0.44216441]]

2. 정수 난수 생성: random.randint()

random.randint() 함수는 주어진 범위 안의 정수를 무작위로 생성합니다. 인자로는 난수의 최솟값, 최댓값 및 원하는 배열의 크기를 지정합니다.

예시

import numpy as np

# 1부터 10 사이의 정수 난수 생성
rand_int = np.random.randint(1, 10, size=(3, 3))
print(rand_int)

결과

[[4, 3, 8],
 [6,1, 2],
[9, 7, 5]]

 

3. 다양한 확률 분포에 따른 난수 생성 

NumPy의 random 모듈은 다양한 확률 분포에 따른 난수를 생성할 수 있는 함수를 제공합니다.

 

3.1. 이항 분포: random.binomial()

random.binomial() 함수는 이항 분포를 따르는 난수를 생성합니다. 인자로는 시행 횟수 n, 성공 확률 및 샘플 크기를 지정합니다.

예시

import numpy as np

# 이항 분포를 따르는 난수 생성
binomial_num = np.random.binomial(n=10, p=0.5, size=5)
print(binomial_num)

결과

[4, 6, 7, 5, 3]

3.2. 포아송 분포: random.poisson()

random.poisson() 함수는 포아송 분포를 따르는 난수를 생성합니다. 인자로는 평균 발생 횟수 lam 및 샘플 크기를 지정합니다.

예시

import numpy as np

# 포아송 분포를 따르는 난수 생성
poisson_num = np.random.poisson(lam=5, size=5)
print(poisson_num)

결과

[5, 6, 5, 7, 3]

4. 난수의 시드 설정: random.seed()

난수 생성은 컴퓨터의 시간에 기반하여 결정되기 때문에 실행할 때마다 결과가 달라집니다. 그러나 때때로, 같은 난수를 여러 번 생성하고 싶을 때가 있습니다. 이때 random.seed() 함수를 사용하여 난수 생성기의 시드 값을 고정할 수 있습니다.

예시

import numpy as np

# 시드 설정
np.random.seed(42)

# 난수 생성
rand_num = np.random.rand(3)
print(rand_num)

# 다시 시드 설정
np.random.seed(42)

# 동일한 난수 생성
rand_num2 = np.random.rand(3)
print(rand_num2)

결과

[0.37454012, 0.95071431, 0.73199394]
[0.37454012, 0.95071431, 0.73199394]

5. 결과

 이 글을 통해 NumPy의 random 모듈을 활용하여 다양한 종류의 난수를 생성하는 방법에 대해 알아보았습니다. 난수 생성은 데이터 과학과 머신 러닝에서 빈번하게 사용되는 기능이므로, 이를 잘 활용하면 효율적인 데이터 처리와 분석을 수행할 수 있습니다.

Comments