import random # 랜덤함수를 위한 헤더파일 import time # 시간 측정을 위한 헤더파일 def check(L) : # 주어진 리스트가 모두 0인지 아닌지 판별 for x in L : if (x == 0) : return False return True def coupon_1(n) : # n개의 바구니에 넣을때 avg = [] start = time.time() for i in range(100000) : # 정확하기 하기위해 100000번 반복 L = [0]*n # 각 바구니에 들어간 공의 수 count = 0 while not check(L) : # 모두 0이 아닐때까지 계속 L[random.randint(0,n-1)] += 1 # 랜덤하게 뽑아서 그 바구니에 1 증가 count += 1 avg += [count] # 시행한 후 count를 avg라는 list에 넣음 print('실험한 값 : ',end = "") print(sum(avg)/len(avg)) # list의 평균을 구함 print("time : ", time.time() - start) def theory(n) : # 수학장님이 수한 이론적인 값 sum = 0 for i in range(1,n+1) : # 1/1부터 1/n의 값을 모두 더함 sum += 1/i sum *= n print('이론적인 값 : ',sum) theory(20) coupon_1(20)