반응형

난수 생성시 시드를 사용하는 이유에 대해 알아봅니다.

2023. 8. 27 최초작성 



난수를 생성시 동일한 시드를 사용하면 동일한 난수를 얻게 됩니다. 예를 들어 np.random.rand()를 사용하여 난수를 생성시키는 경우를 살펴보겠습니다. np.random.seed를 사용하여 동일한 시드 123을 사용한 경우에는 np.random.rand()를 사용하여 난수 2개를 연속해서 생성시 똑같은 값이 출력되는 것을 볼 수 있습니다. 



Python 인터프리터를 실행하여 테스트해보겠습니다.

 

webnautes@webnautesui-MacBookAir ~ % python

Python 3.9.13 (main, May 24 2022, 21:13:51) 

[Clang 13.1.6 (clang-1316.0.21.2)] on darwin

Type “help”, “copyright”, “credits” or “license” for more information.

 

넘파이 모듈을 임포트합니다.

>>> import numpy as np

 

np.random.rand()를 호출할때 마다 다른 난수를 출력하는 것을 볼 수 있습니다. 

 

>>> np.random.rand()

0.5325121718728301

 

>>> np.random.rand()

0.3235663945078062

 

>>> np.random.rand()

0.952589570443413




np.random.seed를 사용하여 시드로 123을 설정합니다. 

>>> np.random.seed(123)

 

np.random.rand를 사용하여 난수 2개를 생성합니다. 지금 생성된 난수 2개를 확인해둡니다.

 

>>> np.random.rand()

0.6964691855978616

 

>>> np.random.rand()

0.28613933495037946



다시 np.random.seed를 사용하여 시드로 123을 설정한 후 난수 생성시 어떤 변화가 있는지 살펴보겠습니다.

>>> np.random.seed(123)

 

np.random.rand를 사용하여 난수 2개를 생성하면 앞에서 생성했던 난수 2개와 순서도 값도 동일한 것을 볼 수 있습니다.

>>> np.random.rand()

0.6964691855978616

 

>>> np.random.rand()

0.28613933495037946



지금까지 살펴본 것처럼 동일한 시드를 설정한 후에 난수를 생성하면 동일한 값의 난수가 동일한 순서로 생성하는 것을 볼 수 있습니다. 모델을 학습하거나 추론시 동일한 입력에 대해서는 항상 동일한 결과가 출력되는 것이 중요하기 때문에 난수 생성시 시드를 동일한 값으로 설정합니다. 

 

참고

https://www.quora.com/What-is-seed-in-random-number-generation



반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts