Formulacija problema
Pretpostavimo da trebamo kreirati skup cijelih nasumičnih brojeva bez ponavljanja u datom rasponu vrijednosti. Primjeri u pokretu:
- generiranje jedinstvenih nasumičnih kodova za proizvode ili korisnike
- dodjeljivanje ljudi zadacima (svaki nasumično sa liste)
- permutacija riječi u upitu za pretraživanje (zdravo seo-shnikam)
- igranje lota itd.
Metoda 1. Jednostavna
Za početak, razmotrimo jednostavnu opciju: trebamo dobiti nasumični skup od 10 cijelih brojeva od 1 do 10. Koristeći funkciju ugrađenu u Excel IZMEĐU SLUČAJA (RUB IZMEĐU) jedinstvenost nije zagarantovana. Ako ga unesete u ćeliju lista i kopirate je za 10 ćelija, onda se ponavljanja lako mogu dogoditi:
Stoga ćemo ići drugim putem.
Sve verzije Excel-a imaju funkciju RANK (RANG), namijenjen za rangiranje ili, drugim riječima, određivanje gornje pozicije broja u skupu. Najveći broj na listi ima rang=1, drugi na vrhu ima rang=2, i tako dalje.
Unesite funkciju u ćeliju A2 Slchis (RAND) bez argumenata i kopirajte formulu dolje 10 ćelija. Ova funkcija će nam generirati skup od 10 slučajnih razlomaka od 0 do 1:
U sljedećoj koloni predstavljamo funkciju RANKza određivanje pozicije na rang listi za svaki primljeni slučajni broj:
Dobijamo u koloni B ono što smo željeli – bilo koji željeni broj neponovljivih nasumičnih cijelih brojeva od 1 do 10.
Čisto teoretski, situacija može nastati kada Slchis će nam dati dva identična slučajna broja u koloni A, njihovi rangovi će se poklopiti i dobićemo ponavljanje u koloni B. Međutim, vjerovatnoća ovakvog scenarija je izuzetno mala s obzirom na činjenicu da je tačnost 15 decimala.
Metoda 2. Komplikovana
Ova metoda je malo složenija, ali koristi samo jednu formulu niza. Recimo da treba da kreiramo listu od 9 nasumičnih celih brojeva koji se ne ponavljaju u rasponu od 1 do 50 na listu.
Unesite sljedeću formulu u ćeliju A2, kliknite na kraju Ctrl + Shift + Enter (da je unesete kao formulu niza!) i kopirajte formulu na željeni broj ćelija:
Metoda 3. Makro
I, naravno, možete riješiti problem pomoću programiranja u Visual Basicu. U jednom od starih članaka o nasumičnom uzorkovanju, već sam citirao makro funkciju Lotto niza, koja proizvodi potreban broj nasumičnih brojeva koji se ne ponavljaju iz zadanog intervala.
- Kako izbrojati broj jedinstvenih vrijednosti u rasponu
- Slučajni odabir elemenata sa liste