Tilfeldige tall uten gjentakelser

Formulering av problemet

La oss anta at vi må lage et sett med tilfeldige heltall uten repetisjoner i et gitt verdiområde. Eksempler på farten:

  • generere unike tilfeldige koder for produkter eller brukere
  • tilordne folk til oppgaver (hver tilfeldig fra listen)
  • permutasjon av ord i søket (hei seo-shnikam)
  • spille lotto osv.

Metode 1. Enkel

Til å begynne med, la oss vurdere et enkelt alternativ: vi må få et tilfeldig sett med 10 heltall fra 1 til 10. Bruke funksjonen innebygd i Excel MELLOM SAKEN (KANT MELLOM) unikhet er ikke garantert. Hvis du legger den inn i en arkcelle og kopierer den ned 10 celler, kan repetisjoner lett skje:

Tilfeldige tall uten gjentakelser

Derfor vil vi gå den andre veien.

Alle versjoner av Excel har en funksjon RANG (RANG), beregnet for rangering eller, med andre ord, bestemme topplasseringen til et tall i et sett. Det største tallet i listen har rank=1, det andre i toppen har rank=2, og så videre.

La oss legge inn funksjonen i celle A2 SLCHIS (RAND) uten argumenter og kopier formelen ned 10 celler. Denne funksjonen vil generere oss et sett med 10 tilfeldige brøktall fra 0 til 1:

Tilfeldige tall uten gjentakelser

I neste kolonne introduserer vi funksjonen RANGfor å bestemme plasseringen i rangeringen for hvert mottatt tilfeldig tall:

Tilfeldige tall uten gjentakelser

Vi får i kolonne B det vi ønsket – et hvilket som helst ønsket antall ikke-repeterende tilfeldige heltall fra 1 til 10.

Rent teoretisk kan det oppstå en situasjon når SLCHIS vil gi oss to like tilfeldige tall i kolonne A, vil deres rangeringer samsvare og vi vil få en repetisjon i kolonne B. Sannsynligheten for et slikt scenario er imidlertid ekstremt liten, gitt det faktum at nøyaktigheten er 15 desimaler.

Metode 2. Komplisert

Denne metoden er litt mer komplisert, men bruker bare én matriseformel. La oss si at vi må lage en liste med 9 ikke-repeterende tilfeldige heltall i området fra 1 til 50 på et ark.

Skriv inn følgende formel i celle A2, klikk på slutten Ctrl + Shift + Enter (for å angi den som en matriseformel!) og kopier formelen ned til ønsket antall celler:

Tilfeldige tall uten gjentakelser

Metode 3. Makro

Og selvfølgelig kan du løse problemet ved å bruke programmering i Visual Basic. I en av de gamle artiklene om tilfeldig sampling, siterte jeg allerede Lotto-array-makrofunksjonen, som produserer det nødvendige antallet tilfeldige ikke-repeterende tall fra et gitt intervall.

  • Hvordan telle antall unike verdier i et område
  • Tilfeldig utvalg av elementer fra en liste

Legg igjen en kommentar