Satunnaisia ​​numeroita ilman toistoja

Ongelman muotoilu

Oletetaan, että meidän on luotava joukko kokonaislukuja satunnaislukuja ilman toistoja tietyllä arvoalueella. Esimerkkejä liikkeellä:

  • ainutlaatuisten satunnaisten koodien luominen tuotteille tai käyttäjille
  • ihmisten määrittäminen tehtäviin (jokainen satunnaisesti luettelosta)
  • sanojen permutaatio hakukyselyssä (hei seo-shnikam)
  • lottoa tms.

Menetelmä 1. Yksinkertainen

Aluksi harkitaan yksinkertaista vaihtoehtoa: meidän on saatava satunnainen 10 kokonaisluvun joukko 1 - 10. Exceliin sisäänrakennetun funktion käyttäminen TAPAUKSEN VÄLILLÄ (REUNA VÄLILLÄ) ainutlaatuisuutta ei taata. Jos kirjoitat sen arkin soluun ja kopioit sen 10 solua alaspäin, toistoja voi helposti tapahtua:

Satunnaisia ​​numeroita ilman toistoja

Siksi mennään toisin päin.

Kaikissa Excelin versioissa on toiminto RANK (RANG), joka on tarkoitettu paremmuusjärjestykseen tai toisin sanoen joukon luvun kärkipaikan määrittämiseen. Luettelon suurimmalla numerolla on rank = 1, toisella listalla on rank = 2 ja niin edelleen.

Syötetään funktio soluun A2 SLCHIS (RAND) ilman argumentteja ja kopioi kaava 10 solua alaspäin. Tämä funktio luo meille joukon 10 satunnaista murtolukua 0-1:

Satunnaisia ​​numeroita ilman toistoja

Seuraavassa sarakkeessa esittelemme funktion RANKmäärittääksesi kunkin vastaanotetun satunnaisluvun sijoituksen sijoituksessa:

Satunnaisia ​​numeroita ilman toistoja

Saamme sarakkeeseen B sen, mitä halusimme – mikä tahansa haluttu määrä ei-toistuvia satunnaisia ​​kokonaislukuja 1:stä 10:een.

Puhtaasti teoreettisesti voi syntyä tilanne, kun SLCHIS antaa meille kaksi identtistä satunnaislukua sarakkeessa A, niiden järjestys täsmää ja saamme toiston sarakkeessa B. Tällaisen skenaarion todennäköisyys on kuitenkin erittäin pieni, kun otetaan huomioon, että tarkkuus on 15 desimaalin tarkkuutta.

Menetelmä 2. Monimutkainen

Tämä menetelmä on hieman monimutkaisempi, mutta käyttää vain yhtä taulukkokaavaa. Oletetaan, että meidän on luotava arkille luettelo 9 ei-toistuvasta satunnaisesta kokonaisluvusta välillä 1-50.

Kirjoita seuraava kaava soluun A2, napsauta lopussa Ctrl + Vaihto + Enter (kirjoita se taulukkokaavana!) ja kopioi kaava haluttuun solujen määrään:

Satunnaisia ​​numeroita ilman toistoja

Menetelmä 3. Makro

Ja tietysti voit ratkaista ongelman ohjelmoimalla Visual Basicissa. Eräässä vanhoista satunnaisotantaa käsittelevistä artikkeleista mainitsin jo Lotto-taulukon makrofunktion, joka tuottaa tarvittavan määrän satunnaisia ​​ei-toistuvia lukuja annetulta aikaväliltä.

  • Kuinka laskea yksilöllisten arvojen lukumäärä alueella
  • Elementtien satunnainen valinta luettelosta

Jätä vastaus