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)