Naključna števila brez ponovitev

Formulacija problema

Predpostavimo, da moramo ustvariti nabor celih naključnih števil brez ponovitev v danem območju vrednosti. Primeri na poti:

  • generiranje edinstvenih naključnih kod za izdelke ali uporabnike
  • dodeljevanje ljudi nalogam (vsako naključno s seznama)
  • permutacija besed v iskalni poizvedbi (zdravo seo-shnikam)
  • igranje lota itd.

Metoda 1. Enostavno

Za začetek razmislimo o preprosti možnosti: pridobiti moramo naključni niz 10 celih števil od 1 do 10. Uporaba funkcije, vgrajene v Excel MED PRIMEROM (ROB MED) edinstvenost ni zagotovljena. Če ga vnesete v celico lista in kopirate 10 celic navzdol, lahko zlahka pride do ponovitev:

Naključna števila brez ponovitev

Zato bomo šli v drugo smer.

Vse različice Excela imajo funkcijo RANK (RANG), namenjen rangiranju ali z drugimi besedami določanju najvišjega položaja števila v nizu. Največje število na seznamu ima rang=1, drugo na vrhu ima rang=2 in tako naprej.

Vnesemo funkcijo v celico A2 SLČIS (RAND) brez argumentov in kopirajte formulo 10 celic navzdol. Ta funkcija nam bo ustvarila niz 10 naključnih delnih števil od 0 do 1:

Naključna števila brez ponovitev

V naslednjem stolpcu predstavimo funkcijo RANKza določitev položaja na lestvici za vsako prejeto naključno število:

Naključna števila brez ponovitev

V stolpcu B dobimo, kar smo želeli – poljubno število neponavljajočih se naključnih celih števil od 1 do 10.

Čisto teoretično lahko pride do situacije, ko SLČIS nam bo dal dve enaki naključni števili v stolpcu A, njuna ranga se bosta ujemala in dobili bomo ponovitev v stolpcu B. Vendar je verjetnost takšnega scenarija izjemno majhna, glede na to, da je natančnost 15 decimalnih mest.

Metoda 2. Zapleteno

Ta metoda je nekoliko bolj zapletena, vendar uporablja samo eno matrično formulo. Recimo, da moramo ustvariti seznam 9 neponavljajočih se naključnih celih števil v območju od 1 do 50 na listu.

Vnesite naslednjo formulo v celico A2, kliknite na koncu Ctrl + Shift + Enter (da jo vnesete kot matrično formulo!) in kopirajte formulo navzdol na želeno število celic:

Naključna števila brez ponovitev

Metoda 3. Makro

In seveda lahko težavo rešite s programiranjem v Visual Basicu. V enem izmed starih člankov o naključnem vzorčenju sem že citiral makro funkcijo Lotto array, ki proizvede potrebno število naključnih neponavljajočih se števil iz danega intervala.

  • Kako prešteti število edinstvenih vrednosti v obsegu
  • Naključna izbira elementov s seznama

Pustite Odgovori