난수(random number)란 예측할 수 없는 임의의 수를 말한다. 파이썬에서는 random 모듈(11장)의 random.randint()
함수를 이용해 매개변수로 지정한 범위 사이의 난수를 구할 수 있다. 다음은 random.randint()
함수를 사용하는 예이다.
>>> import random # random 모듈 임포트
>>> random.randint(0, 63) # 0 이상 63 이하의 임의의 수
24
>>> random.randint(0, 63)
62
>>> random.randint(0, 63)
0
>>> [random.randint(0, 63) for _ in range(5)] # 난수 5개의 리스트
[39, 38, 43, 46, 29]
random.randint()
함수를 이용해 무한한 개수의 난수를 꺼낼 수 있는 무한 난수 생성기를 만들어 보아라.
코드
import random
def infinity_random_generator(number_from, number_to):
"""number_from 에서 number_to 사이의 임의의 수를 무한히 생성하는 난수 생성기를 반환한다."""
while True:
yield random.randint(number_from, number_to)
# 함수의 동작 확인
random_numbers = infinity_random_generator(1, 20)
for i, random_number in zip(list(range(10)), random_numbers):
print(i, '번째로 뽑은 임의의 수:', random_number)
실행 결과
0 번째로 뽑은 임의의 수: 1
1 번째로 뽑은 임의의 수: 17
2 번째로 뽑은 임의의 수: 11
3 번째로 뽑은 임의의 수: 3
4 번째로 뽑은 임의의 수: 4
5 번째로 뽑은 임의의 수: 20
6 번째로 뽑은 임의의 수: 11
7 번째로 뽑은 임의의 수: 4
8 번째로 뽑은 임의의 수: 7
9 번째로 뽑은 임의의 수: 1
next()
함수로 생성기에서 값을 꺼낼 수 있다.while True
)의 본문에서 yield 문을 실행하면 된다.