Nasumični brojevi bez ponavljanja

Formulacija problema

Pretpostavimo da trebamo stvoriti skup cijelih nasumičnih brojeva bez ponavljanja u zadanom rasponu vrijednosti. Primjeri u pokretu:

  • generiranje jedinstvenih nasumičnih kodova za proizvode ili korisnike
  • dodjeljivanje zadataka ljudima (svaki nasumično s popisa)
  • permutacija riječi u upitu za pretraživanje (pozdrav 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. Korištenje funkcije ugrađene u Excel IZMEĐU SLUČAJA (RUB IZMEĐU) jedinstvenost nije zajamčena. Ako ga unesete u ćeliju lista i kopirate dolje 10 ćelija, tada se lako može dogoditi ponavljanje:

Nasumični brojevi bez ponavljanja

Stoga ćemo ići drugim putem.

Sve verzije Excela imaju funkciju RANG (RANG), namijenjen rangiranju ili, drugim riječima, određivanju gornje pozicije broja u skupu. Najveći broj na listi ima rang=1, drugi na vrhu ima rang=2 itd.

Upišimo funkciju u ćeliju A2 SLCHIS (RAND) bez argumenata i kopirajte formulu 10 ćelija prema dolje. Ova funkcija će nam generirati skup od 10 nasumičnih razlomaka od 0 do 1:

Nasumični brojevi bez ponavljanja

U sljedećem stupcu uvodimo funkciju RANGza određivanje pozicije na ljestvici za svaki primljeni slučajni broj:

Nasumični brojevi bez ponavljanja

Dobivamo u stupcu B ono što smo željeli – bilo koji željeni broj nasumičnih cijelih brojeva koji se ne ponavljaju od 1 do 10.

Čisto teoretski može doći do situacije kada SLCHIS dat će nam dva identična nasumična broja u stupcu A, njihovi rangovi će se podudarati i dobit ćemo ponavljanje u stupcu B. Međutim, vjerojatnost takvog scenarija je izuzetno mala, s obzirom na činjenicu da je točnost 15 decimalnih mjesta.

Metoda 2. Komplicirano

Ova metoda je malo kompliciranija, ali koristi samo jednu formulu polja. Recimo da trebamo izraditi popis od 9 nasumičnih cijelih 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 biste je unijeli kao formulu polja!) i kopirajte formulu na željeni broj ćelija:

Nasumični brojevi bez ponavljanja

Metoda 3. Makro

I, naravno, problem možete riješiti programiranjem u Visual Basicu. U jednom od starih članaka o slučajnom uzorkovanju, već sam citirao Lotto array makro funkciju, koja proizvodi potreban broj slučajnih brojeva koji se ne ponavljaju iz zadanog intervala.

  • Kako izbrojati broj jedinstvenih vrijednosti u rasponu
  • Slučajni odabir elemenata s popisa

Ostavi odgovor