Tilfældige tal uden gentagelser

Formulering af problemet

Lad os antage, at vi skal oprette et sæt af heltal tilfældige tal uden gentagelser i et givet værdiområde. Eksempler på farten:

  • generere unikke tilfældige koder for produkter eller brugere
  • tildele folk til opgaver (hver enkelt tilfældigt fra listen)
  • permutation af ord i søgeforespørgslen (hej seo-shnikam)
  • spille lotto osv.

Metode 1. Enkel

Til at begynde med, lad os overveje en simpel mulighed: Vi skal have et tilfældigt sæt af 10 heltal fra 1 til 10. Brug af funktionen indbygget i Excel MELLEM SAGEN (KANT MELLEM) unikhed er ikke garanteret. Hvis du indtaster det i en arkcelle og kopierer det ned 10 celler, kan gentagelser nemt ske:

Tilfældige tal uden gentagelser

Derfor vil vi gå den anden vej.

Alle versioner af Excel har en funktion RANG (RANGE), beregnet til at rangere eller med andre ord bestemme topplaceringen af ​​et tal i et sæt. Det største tal på listen har rank=1, det andet i toppen har rank=2, og så videre.

Lad os indtaste funktionen i celle A2 SLCHIS (RAND) uden argumenter og kopier formlen ned 10 celler. Denne funktion vil generere os et sæt af 10 tilfældige brøktal fra 0 til 1:

Tilfældige tal uden gentagelser

I næste kolonne introducerer vi funktionen RANGfor at bestemme placeringen i ranglisten for hvert modtaget tilfældigt tal:

Tilfældige tal uden gentagelser

Vi får i kolonne B, hvad vi ønskede - et hvilket som helst ønsket antal ikke-gentagende tilfældige heltal fra 1 til 10.

Rent teoretisk kan der opstå en situation, hvornår SLCHIS vil give os to identiske tilfældige tal i kolonne A, vil deres rækker matche, og vi vil få en gentagelse i kolonne B. Sandsynligheden for et sådant scenarie er dog ekstremt lille, givet det faktum, at nøjagtigheden er 15 decimaler.

Metode 2. Kompliceret

Denne metode er lidt mere kompliceret, men bruger kun én matrixformel. Lad os sige, at vi skal lave en liste med 9 ikke-gentagende tilfældige heltal i området fra 1 til 50 på et ark.

Indtast følgende formel i celle A2, klik til sidst Ctrl + Skift + Enter (for at indtaste det som en matrixformel!) og kopier formlen ned til det ønskede antal celler:

Tilfældige tal uden gentagelser

Metode 3. Makro

Og selvfølgelig kan du løse problemet ved hjælp af programmering i Visual Basic. I en af ​​de gamle artikler om tilfældig stikprøve citerede jeg allerede Lotto-array-makrofunktionen, som producerer det nødvendige antal tilfældige ikke-gentagende tal fra et givet interval.

  • Sådan tælles antallet af unikke værdier i et interval
  • Tilfældigt udvalg af elementer fra en liste

Giv en kommentar