본문 바로가기

프로그래밍 언어/파이썬 수학

07. 파이썬으로 배우는 수학 기초 : 난수 (Random Number)

개요

난수(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. 파이썬으로 배우는 수학 기초 : 절대값

개요 절대값에 대해서 알아보고 파이썬 NumPy를 이용해서 구현해보도록 하겠습니다 절대값 절대값은 어떤 수의 0으로부터의 거리를 의미합니다. 인공지능에서는 0을 중심으로 값을 거리를 파악��

iot-lab.tistory.com