파워 파이썬/패키지

numpy 패키지를 활용한 난수 생성

상선약수64 2023. 9. 24. 15:01
반응형

데이터를 처리하거나 인공지능에서 모델을 추정하기 위해 난수를 발생하는 경우가 많습니다. 이번에는 난수를 생성하는 메소드와 활용방법에 대해 알아보도록 하겠습니다.

 

난수란 
정의된 범위내에서 무작위로 추출된 수 

 

 


1. numpy패키지 소개

  • numpy는 파이썬에서 선형 대수(linear algebra) 계산  및 통계기능을 제공합니다. 다차원 배열 클래스(n-dimensional array)와 벡터화 연산(vectorized operation)을 지원합니다.
  • numpy 패키중에 random모듈은 난수를 생성해주는 다양한 함수가 제공 됩니다.
  • 난수생성 주요 함수는 표와 같습니다. 
함수명 설명
random.rand() 0~1사이 실수형 데이터 난수 생성 np.random.rand(5) : 5개의 난수가 발생
random.randint() 정수 난수를 생성 np.random,randint(5, size=10)
random.randn() 표준정규분포 기준 난수 생성 2.0* np.random.randn(10)+3.5 
random.normal() 정규분포 기준 난수 생성 np.ramdom.normal(0, 1, size=10)
random.choice() 리스트의 범주에서 무작위로 1개 선택  
random.seed() 난수 재생성(동일값을 얻고 싶을 경우)  

 

2.random.rand()
0~1사이 실수형 데이터 난수 생성됨

random.rand() 실습

3. random.randint()
random.randint([최소값, 최대값], size=n) : [최소값, 최대값]의 범위에서 size만큼 정수형의 난수를 생성

random.randint() 실습

4. random.randn()
random.randn() 함수는 표준정규분포(Standard normal distribustion: 평균은 0이고 표준편차가 1인 정규분포)로 부터 난수를 생성

random.randn() 실습

n3의 배열은 평균이 3.0이고 표준편차 2.0인 난수를 생성한 예입니다.

평균이 3.0이고 표준편차가 2.0인 난수를 발생하기 위해서는

표준편차 * np.random.randn(10) + 평균과 같은 형식으로 사용하면 도비니다.  

 

5. random.normal()
정규분포(Normal Distribution)로 부터 샘플링된 데이터 중 난수를 생성

random.normal() 실습

  • n1 배열은 정규분포(0,1)로 부터 얻은 데이터로 난수 3개를 발생
  • n2 배열은 정규분포(2,  2^2)로 부터 얻은 데이터로 난수 4개를 발생
  • n3 배열은 정규분포(2, 3^2)로 부터 얻은 데이터로 3행 3열의 난수를 발생
6. random.choice() 
주어진 배열로 부터 임의의 난수를 생성함

random.choice() 실습

7. random.seed()
난수를 발생할 때 시작값 설정함으로서 동일한 난수를 재 생성함

random.seed() 실습

  • a는 seed값을 부여하지 않아 실행을 할때 마다 a의 array값이 바뀝니다.
  • c는 seed(5)라고 지정함으로 실행을 할때 마다 c의 array값이 동일합니다. 예측을 할때 동일한 결과를 얻기 위해서는 seed값을 정해주어야 하고, 한번만 지정하면 됩니다.

소스참조 : https://github.com/sense64/data_viz/blob/main/prg_random01.ipynb