난수(무작위 값)이 필요할 때가 있습니다. Python의 빌트인 모듈인 random을 사용하면, 특정한 정수 범위 내에서 하나를 선택하거나, 0에서 1 사이의 실수를 가져오거나, iterable 객체에서 요소를 선택하는 등의 일을 할 수 있습니다. Python은 난수 생성을 위해 Mersenne Twister(메르센 트위스터) 알고리즘을 사용하며, C언어 기반으로 구현되어 빠르고 스레드 안전합니다. 이 모듈에서 제공하는 함수는, 실제로는 random.Random 클래스의 인스턴스에 바인딩된 메소드입니다.

정수를 위한 함수

random.randrange(stop) | random.randrange(start, stop[, step])

인자로 전달된 범위(start, stop, step)에서 무작위로 선택된 요소를 반환합니다. random.choice(range(start, stop, step))와 결과는 동일하지만, 내부적으로 range 객체를 만들지는 않습니다. 이 함수의 위치 인자들은 range()의 인자와 동일합니다.

random.randint(a, b)

a와 b 사이의 정수 N을 반환합니다. 여기서 N은 a <= N <= b입니다. randrange(a, b+1)과 같으며, 내부적으로도 그렇게 동작합니다.

Sequence 객체를 위한 함수

random.choice(seq)

인자로 전달된 sequence 객체에서 요소 하나를 반환합니다. seq가 비어있을 경우 IndexError를 발생시킵니다.

random.shuffle(x[, random])

sequence인 x를 임의로 섞습니다. 선택적 인자인 `random`은 \[0.0, 1.0)에서 임의의 float을 반환하는 함수를 전달할 수 있는데, 기본적으로 이 인자는 `random.random()` 함수입니다.

실수를 위한 함수

random.random()

[0.0, 1.0) 범위의 실수 하나를 반환합니다.

random.uniform(a, b)

a와 b 사이의 실수 N을 반환합니다. 여기서 N은 a <= b라면 a <= N <= b이고, b < a라면 b <= N <= a입니다.

이 외에 triangular, betavariate, expovariate 등 많은 함수들이 존재하며, 이는 Python 공식 문서 - random에서 확인할 수 있습니다.

'Python 계열 > Python Standard Library' 카테고리의 다른 글

[Python Standard Library] time  (0) 2018.09.07
[Python Standard Library] re  (0) 2018.09.07

+ Recent posts