더북(TheBook)

13.2 난수

같은 입력을 주면 컴퓨터 프로그램은 매번 같은 출력을 생성하는데, 이를 결정적(deterministic)이라고 한다. 일반적으로 계산이 같으면 결과도 같기 마련이므로 결정론(determinism)은 일반적으로 좋은 것이다. 그렇지만 일부 애플리케이션에서는 컴퓨터를 예측할 수 없기를 원한다. 게임이 대표적인 경우이며, 이외에도 예측 불가능을 원하는 애플리케이션이 있다.

프로그램을 진짜 비결정적(nondeterministic)으로 만드는 것은 어렵다고 알려졌지만, 비결정적으로 보이는 정도는 여러 가지 방법으로 만들 수 있다. 한 가지 방법은 유사난수(pseudorandom number)를 생성하는 알고리즘을 사용하는 것이다. 유사난수는 결정론적 계산에 따라 생성되므로 진짜 무작위(random)는 아니지만, 숫자만 봐서는 무작위인지 구별하는 것이 사실상 거의 불가능하다.

random 모듈에는 유사난수를 생성하는 함수들이 제공된다(이후에는 간단히 random이라고 부르겠다).

random 함수는 0.0부터 1.0 사이에 임의의 실수를 반환한다(0.0은 포함되지만, 1.0은 포함되지 않는다). random을 호출할 때마다 긴 수열에서 다음 수를 가져온다. 예시를 보기 위해 간단한 루프를 실행해보자.

import random

 

for i in range(10):

x = random.random()

print(x)

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.