프로그램 1.4.2 카드 수집가 시뮬레이션 (couponcollector.py)
import random import sys import stdarray import stdio n = int(sys.argv[1]) count = 0 collectedCount = 0 isCollected = stdarray.create1D(n, False) while collectedCount < n: # 카드를 하나 생성한다. value = random.randrange(0, n) count += 1 if not isCollected[value]: collectedCount += 1 isCollected[value] = True stdio.writeln(count)
n count collectedCount isCollected[i] value |
카드의 값 (0에서 n-1) 수집한 카드 수 수집한 카드의 가지 수 카드 i를 수집했는지 여부 현재 카드의 값 |
이 프로그램은 명령 줄 인수로 n
을 입력받고 n
가지 카드를 모두 갖게 될 때까지 수집한 카드의 수를 출력한다. 결국 쿠폰 수집가 문제를 시뮬레이션한다.
% python3 couponcollector.py 1000 6583 % python3 couponcollector.py 1000 6477 % python3 couponcollector.py 1000000 12782673