power-girl0-0

[ Numpy ] 랜덤 생성 본문

언어/Python

[ Numpy ] 랜덤 생성

power-girl0-0 2021. 3. 29. 13:44
728x90

 랜덤 생성 

numpy는 몇몇 난수 발생 루틴을 제공한다. 아래는 이에 해당하는 난수 발생 루틴의 종류이다.

 
  • random.normal 
  • random.rand 
  • random.randn
  • random.randint
  • random.random

 0. 환경 설정 

먼저, 활용을 위해서 세팅을 아래와 같이 해주자.

import numpy as np
import matplotlib.pyplot as plt

 1. random.rand 

: 0~1 까지의 실수 난수가 발생한다.

x = np.random.rand(3,2)
print(x)

 

x =  np.random.rand(1000) 
plt.hist( x, 100)
plt.show()


 2. random.randn 

: 평균이 0 , 편차가 1인 정규분포로 난수를 발생시킨다.

x =   np.random.randn(1000) 
plt.hist( x, 100)
plt.show()


 3. random.normal 

정규분포를 기반으로 랜덤 넘버 배열생성, 초기화하는 것으로, 아래와 같은 형식으로 사용한다.

   rand.random ( 평균, 표준 편차, 배열 크기 )
# 100개의 0을 기준으로 표준편차가 0.5 인 정규분포
x = np.random.normal(0, 0.5, 1000)

plt.plot(x, '.')
plt.show()

# 히스토 그램으로 보기 
plt.hist( x, 100)
plt.show()


 4. 랜덤 데이터 활용 

다음은 간단한 직선식의 그래프이다.

x = np.arange(100)
y = x * 2
plt.plot(x,y, '.')
plt.show()

여기에 랜덤값의 배열을 더해주면 x * 2 + 오차 가 되어 분산된 형태의 직선이 나오게 된다.

x = np.arange(100)
y = x * 2 + np.random.normal(0,10,100)
plt.plot(x,y, '.')
plt.show()

 

문제 1. 확산 직선 그리기

다음과 같은 점의 분포를 생성해서 그려보자.

정답

더보기
더보기
x = np.arange(100) 
y = x * 2 + np.random.normal(0,x/4,100) 
plt.plot(x,y, '.') 
plt.show()

 5. 군집데이터 

다음은 간단한 군집 데이터 생성 방법이 나와있다.

x,y = np.random.normal(50,10,100), np.random.normal(50,10,100)
plt.xlim(0,100)  # 도표의 x 축 범위를 0 ~ 100 까지
plt.ylim(0,100)  # 도표의 y 축 범위를 0 ~ 100 까지
plt.plot(x,y, '.')
plt.show()


문제2. 비스듬한 군집 그리기

다음과 같은 점의 분포를 생성해서 그려보자

정답

더보기
더보기
x,y = np.random.normal(50,15,100), np.random.normal(50,5,100)
plt.xlim(0,100)   
plt.ylim(0,100)   
plt.plot(x,(y+x)/2, '.')
plt.show()
728x90

'언어 > Python' 카테고리의 다른 글

[ Numpy ] 변환  (0) 2021.03.29
Numpy  (0) 2021.03.15
구글 코랩 사용법  (0) 2021.03.08
[ 15596 ] 정수 N개의 합  (0) 2021.03.02
Python 개요  (0) 2020.12.16
Comments