import random def albumPosamezno(velAlbuma) : ''' koliko sličic je potrebno kupiti, da napolnimo album ''' album = [False] * (velAlbuma + 1) # na začetku je album prazen kolikoManjka = velAlbuma kolikoKupil = 0 # dokler ne napolnim albuma while kolikoManjka > 0 : slicica = random.randint(1,velAlbuma) # kupil sem sličico kolikoKupil = kolikoKupil + 1 if not album[slicica] : # nimam je še! kolikoManjka = kolikoManjka - 1 album[slicica] = True # nalepim # album je poln return kolikoKupil def izvediNakup(velAlbuma, kolikoZavojček) : '''Vrne tabelo velikosti kolikoZavojček z samimi različnimi števili med 1 in velAlbuma''' tabela = [] while len(tabela) < kolikoZavojček: slikca = random.randint(1,velAlbuma) if slikca not in tabela: tabela.append(slikca) return tabela def izvediNakupBolje(velAlbuma, kolikoZavojček) : '''Vrne tabelo velikosti kolikoZavojček z samimi različnimi števili med 1 in velAlbuma''' tabela = [] # na predavanjih smo si ogledali, kako to naredimo na način, da nikoli NI problemov s hitrostjo return tabela def polnimoAlbum(velAlbuma, kolikoZavojček) : ''' koliko zavojčkov je potrebno kupiti, da napolnimo album če je v enem kolikoZavojček različnih sličic''' album = [False] * (velAlbuma + 1) # na začetku je album prazen kolikoManjka = velAlbuma kolikoKupil = 0 # dokler ne napolnim albuma while kolikoManjka > 0 : nakup = izvediNakup(velAlbuma, kolikoZavojček) # kupil sem zavojček kolikoKupil = kolikoKupil + 1 for slicica in nakup: if not album[slicica] : # nimam je še! kolikoManjka = kolikoManjka - 1 album[slicica] = True # nalepim # album je poln return kolikoKupil velikost = int(input('Koliko sličic je v albumu: ')) stPoskusov = int(input('Koliko poskusov boš izvedel: ')) # prvi poskus posebej, da dobimo začetni naj vrednosti kolikoKupiti = polnimoAlbum(velikost, 1) # ali pa albumPosamezno(velikost) skupnaVsota = kolikoKupiti največ = kolikoKupiti najmanj = kolikoKupiti kolikoNajmanj = 1 # in sedaj še preostali poskusi for i in range(stPoskusov - 1): kolikoKupiti = albumPosamezno(velikost) if kolikoKupiti > največ: # največ = max(kolikoKupiti, največ) največ = kolikoKupiti if kolikoKupiti < najmanj: # najmanj = min(kolikoKupiti, najmanj) najmanj = kolikoKupiti kolikoNajmanj = 1 elif kolikoKupiti == najmanj: kolikoNajmanj += 1 skupnaVsota += kolikoKupiti povprečje = skupnaVsota / stPoskusov print('V povprečju si moral kupiti {0} sličic'.format(povprečje)) print('Najmanj smo morali kupiti {0} sličic, to se je zgodilo {1}.krat '.format(najmanj, kolikoNajmanj)) print('Največ smo morali kupiti {0} sličic'.format(največ))