개요
난수(Random Number)에 대해서 알아보고 파이썬 NumPy를 이용해서 구현해보도록 하겠습니다
난수(Random Number)
난수는 무작위로 만들어지는 수열을 가리킵니다.
인공지능에서는 파라미터를 초기화할 때 난수를 활용하기도 합니다.
예를 들어 주사위를 던지는 행위가 난수랑 비슷합니다.
주사위를 던지면 1에서 6까지의 수가 무작위로 정해지기 때문입니다.
1에서 6까지의 난수를 생성하기
NumPy의 random.randint()
함수에 정수 a를 인수로 넘겨주면 0에서 a-1의 값을 난수로 반환합니다.
import numpy as np
r = np.random.randint(6) + 1 # 0~5까지의 난수가 발생되므로 1을 더해서 1~6으로 만든다.
print(r)
[결과]
결과가 2로 나왔지만 실행할 때마다 숫자는 랜덤 하게 변경됩니다.
0에서 1까지의 난수를 생성하기
NumPy의 random.rand()
함수는 0에서 1 사이의 소수의 난수를 생성합니다.
import numpy as np
r = np.random.rand() # 0~1까지의 소수가 랜덤하게 발생
print(r)
[결과]
결과가 실행할때마다 랜덤 하게 변경됩니다.
균일한 난수 만들기
random.rand()
함수는 0에서 1 사이의 소수를 균일한 확률로 발생시킵니다.
이 함수에 인수로 정수a를 넘겨주면 a개만큼의 난수를 균일하게 반합니다.
아래의 샘플코드는 x축 y축 값을 가지는 1000개의 좌표를 만들어 그래프에 표시해보도록 하겠습니다.
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
n = 1000
x = np.random.rand(n)
y = np.random.rand(n)
plt.scatter(x, y)
plt.grid()
plt.show()
[결과]
균일하지 않은 난수 만들기
random.randn()
함수는 정규분포의 확률에 따라 난수를 발생시킵니다.
정규분포는 중앙으로는 확률이 높아지고 외각 쪽으로는 확률이 낮아집니다.
아래의 샘플코드는 x축 y축 값을 가지는 1000개의 좌표를 만들어 그래프에 표시해보도록 하겠습니다.
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
n = 1000
x = np.random.randn(n)
y = np.random.randn(n)
plt.scatter(x, y)
plt.grid()
plt.show()
[결과]
결과를 보면 중앙에 조금 더 집중되도록 난수가 발생한 것을 알 수 있습니다.
다음에는 절대값에 대해서 알아보도록 하겠습니다.
https://iot-lab.tistory.com/164
'프로그래밍 언어 > 파이썬 수학' 카테고리의 다른 글
08. 파이썬으로 배우는 수학 기초 : 절대값 (0) | 2020.07.21 |
---|---|
06. 파이썬으로 배우는 수학 기초 : 수열의 합과 곱 (0) | 2020.07.15 |
05. 파이썬으로 배우는 수학 기초 : 삼각함수 (2) | 2020.07.14 |
04. 파이썬으로 배우는 수학 기초 : 다항식과 다항식함수 (0) | 2020.07.14 |
03. 파이썬으로 배우는 수학 기초 : 제곱과 제곱근 (0) | 2020.07.14 |