관리 메뉴

bright jazz music

기초수학 : 8. 난수 본문

Math/기초수학

기초수학 : 8. 난수

bright jazz music 2022. 7. 18. 09:05

난수

  • 난수는 규칙성이 없는 미확정의 수치이다.
  • 인공지능에서는 파라미터의 초기화 등에 난수가 활용된다.

 

정수 난수 생성

  • 파이썬에서는NumPy의 random.randint()함수를 사용하여 정수인 난수를 생성한다.
  • 함수에 정수 a를 인수로 입력하면 0부터 a-1 까지의 정수를 난수로 반환한다.
#정수인 난수 출력

import numpy as np
import matplotlib.pyplot as plt


r_int = np.random.randint(6) + 1            #0부터 5까지의 난수에 1을 더한다.
print("np.random.randint(6) + 1 = ", r_int) #1부터 6까지가 랜덤으로 표시됨

#3

#1~6사이에서 랜덤으로 출력됨

 

소수 난수 생성

  • 소수인 난수는 Numpy의 random.rand() 함수를 사용한다.
  • 0부터 1 사이의 임의의 소수가 출력된다.
import numpy as np


r_dec = np.random.rand()             #0부터 1사이의 소수를 랜덤으로 반환한다.
print(r_dec)


#0.48802511193081655

#0~1사이에서 랜덤으로 출력됨

 

 

균일한 난수 생성

  • random.rand() 함수는 0에서 1 사이의 소소를 균등한 확률로 반환한다.
  • 이 함수에 정수 a를 인수로 건네면 a개의 난수가 균일 확률로 반환된다.

 

 

실습 1

 

아래 코드는 다수의 균일한 확률의 난수를  x좌표, y좌표로 삼는다.

이로써 난수가 균일 확률로 발생한다는 것을 확인한다.

 

import numpy as np
import matplotlib.pyplot as plt

n = 1000                #발생시킬 샘플 수

x = np.random.rand(n)   #0~1 사이의 균일 확률로 발생한 난수

y = np.random.rand(n)   #0~1 사이의 균일 확률로 발생한 난수

plt.scatter(x, y)       #산포도를 plot
plt.grid()
plt.show()

 

 

편향된 난수 생성

  • 난수가 결정될 확률은 균일하다고는 할 수 없다.
  • NumPy의 random.randn() 함수는 정규분포를 따르는 확률로 난수를 반환한다. *rand뒤에 n이 붙는다.
  • 정규분포에서는 중앙에서 확률이 높고 양 끝에서 확률이 낮아진다.

 

실습2

 

아래의 코드는 정규분포를 따르는 난수를 x 좌표, y 좌표로 한다.

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)       #산포도를 plot
plt.grid()
plt.show()

0에서의 분포가 가장 높다. 난수가 중앙에 편향에서 분포하는 것이다. 인공지능에서는 파라미터의 초깃값을 정하기 위한 목적으로 난수를 빈번히 사용한다.

 

 

실습 3

 

1에서 10까지의 정수가 랜덤으로 표시되게 할 것

import numpy as np
import matplotlib.pyplot as plt

r_int = np.random.randint(10) + 1

print(r_int)    #1부터 10까지가 랜덤으로 표시

#4
Comments