무향향수

[Python] random 이해하기 (rand, randint, randn) 본문

데이터분석_Python

[Python] random 이해하기 (rand, randint, randn)

튼튼한장 2023. 8. 8. 13:50

목차☃️

1. random (rand(), randint(), randn())

2. 몬테카를로 분석 (random 활용하기)

 

 

 

더보기

학습 이유

 데이터 분석을 할 때 랜덤 숫자를 자주 사용한다는 사실을 알고 랜덤하게 숫자를 발생시키는 numpy기능인 random에 미리 공부해야겠다 생각하여 블로그에 정리하게 되었다.

 

 

 

 


☃️ 1. random

데이터 분석시 랜덤하게 발생하는 숫자를 자주 사용한다.

numpy 라이브러리에 구현되어 있으며 np.random.rand() & np.random.randint() & np.random.randn() 이렇게 세가지가 있다.

 

 

 

rand()

rand() : 0과 1사이 균등분포의 random 수(실수)

import numpy as np

np.random.rand(3)
# array([0.70892112, 0.34300446, 0.23220519]) <-- 항상 랜덤한 숫자가 출력된다.

 

 

 

 randint(start, end, count)

randint(start, end, count) : (start ~ (end - 1)) 범위의 균등분포 count개 random 수 (정수))

import numpy as np

np.random.randint(1, 100, 5)
# array([30, 22, 57, 90, 68]) => 1부터 99까지 랜덤 숫자 5개를 포함하는 배열이 출력된다.

 

 

 

randn()

randn() : 정규(Gaussian) 분포의 random 수 (평균 0, 표준편차 1)

⭐⭐  0 ~ 1 사이 값이 아니다! ⭐⭐

import numpy as np

np.random.randn(3)
# array([ 1.27191272, -0.27972859,  1.09619211]) => 랜덤 숫자 3개가 배열에 저장되어 출력

 

 

 

 

사용예시

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline # 그래프를 화면에 출력

x = range(100)
y = np.random.rand(100) # 랜덤 숫자를 배열에 저장

plt.scatter(x, y)
plt.xlabel = "x축"
plt.ylabel = "y축"

 


☃️ 2. 몬테카를로 분석

random() 시뮬레이션으로 원주율(pi)을 구현해본다.

원의 면적은 pi * r**2 이므로 아래 코드와 같이 반경이 1인 원과 사각형의 관계에서 랜덤하게 0~1 사이의 값을 두 개씩 만들고 각각(x, y) 좌표로 지정하면, 이 점이 원 내부에 들어올 확률을 실제 개수를 세어 구할 수 있다.

확률은 면적의 비율이므로 pi를 다음과 같이 구할 수 있다.

 

pi = 4 * (랜덤한 점이 원 내부에 들어올 확률)

 

프로그램으로 구현하면 랜덤하게 1만개의 샘플 점을 생성하여 구현할 수 있다.

n의 개수를 늘리면 더 정확한 pi값을 시뮬레이션으로 구할 수 있게 된다.

이러한 기법을 몬테카를로 방식이라고 한다.

 

import numpy as np
import matplotlib.pyplot as plt

n = 10000
x = np.random.rand(n)
y = np.random.rand(n)

plt.figure(figsize = (6, 6)) 
plt.scatter(x, y, s = 1) # 그래프에 10000개 점을 흩뿌려준다.
xx = np.linspace(0, 1, 100)
plt.plot(xx, (1 - xx * xx) ** 0.5, c = 'r') # 그래프에 원을 그려준다.

pi = ((x ** 2 + y ** 2) < 1).mean() * 4
pi # 원주율

 

 

 

plt.figure(figsize=(6,6))

여러 개의 그래프를 그릴 때 figure()를 사용한다.

plt.figure(figsize=(6,6))
# 여러 개의 그래프를 그릴 때 사용된다.

 

 

np.linspace(start, end, count)

np.linspace(1, 10, 10)
# 1부터 10까지의 값으로 구성된 배열이 생성된다.

 

 

 

Numpy는 아래 글 참조!

 

[Python] Numpy(넘파이) 기능 이해하기

목차 🐢 Numpy Numpy의 이해 Numpy 배열 생성 더보기 학습 이유 파이썬을 이용한 데이터 분석에 대해 학습하면서 numpy 라이브러리를 사용한 실습 예제들이 자주 출제되어 numpy가 무엇인지 정확하게

angidgidtn.tistory.com

 

 

Matplotlib는 아래 글 참조!

 

[Python] Matplotlib 기능 이해하기

목차 🌝 Matplotlib 더보기 학습 이유 파이썬 데이터 분석에 필수적으로 사용되는 matplotlib에 대해 학습하여 데이터 분석한 결과를 쉽게 시각화하기 위하여 학습하게 되었다. 🌝 1. Matplotlib matplotlib

angidgidtn.tistory.com