Willekeurige getallen zonder herhalingen

Formulering van het probleem

Laten we aannemen dat we een reeks gehele willekeurige getallen moeten maken zonder herhalingen in een bepaald waardenbereik. Voorbeelden onderweg:

  • het genereren van unieke willekeurige codes voor producten of gebruikers
  • mensen toewijzen aan taken (elk willekeurig uit de lijst)
  • permutatie van woorden in de zoekopdracht (hallo seo-shnikam)
  • lotto spelen enz.

Methode 1. Eenvoudig

Laten we om te beginnen een eenvoudige optie overwegen: we moeten een willekeurige set van 10 gehele getallen van 1 tot 10 krijgen. De functie gebruiken die in Excel is ingebouwd TUSSEN DE ZAAK (RAND TUSSEN) uniciteit is niet gegarandeerd. Als u het in een bladcel invoert en het 10 cellen naar beneden kopieert, kunnen herhalingen gemakkelijk gebeuren:

Willekeurige getallen zonder herhalingen

Daarom gaan we de andere kant op.

Alle versies van Excel hebben een functie RANK (BELANG), bedoeld voor het rangschikken of, met andere woorden, het bepalen van de toppositie van een nummer in een set. Het grootste getal in de lijst heeft rang=1, het tweede bovenaan heeft rang=2, enzovoort.

Laten we de functie in cel A2 . invoeren SLCHIS (RAND) zonder argumenten en kopieer de formule 10 cellen naar beneden. Deze functie genereert een set van 10 willekeurige fractionele getallen van 0 tot 1:

Willekeurige getallen zonder herhalingen

In de volgende kolom introduceren we de functie RANKom de positie in de rangschikking voor elk ontvangen willekeurig nummer te bepalen:

Willekeurige getallen zonder herhalingen

We krijgen in kolom B wat we wilden - elk gewenst aantal niet-herhalende willekeurige gehele getallen van 1 tot 10.

Puur theoretisch kan er een situatie ontstaan ​​waarin: SLCHIS geeft ons twee identieke willekeurige getallen in kolom A, hun rangorde komt overeen en we krijgen een herhaling in kolom B. De kans op een dergelijk scenario is echter extreem klein, gezien het feit dat de nauwkeurigheid 15 decimalen is.

Methode 2. Ingewikkeld

Deze methode is iets gecompliceerder, maar gebruikt slechts één matrixformule. Laten we zeggen dat we een lijst moeten maken van 9 niet-herhalende willekeurige gehele getallen in het bereik van 1 tot 50 op een blad.

Voer de volgende formule in cel A2 in, klik op het einde Ctrl + Shift + Enter (om het in te voeren als een matrixformule!) en kopieer de formule naar het gewenste aantal cellen:

Willekeurige getallen zonder herhalingen

Methode 3. Macro

En natuurlijk kunt u het probleem oplossen door te programmeren in Visual Basic. In een van de oude artikelen over willekeurige steekproeven noemde ik al de Lotto-array-macrofunctie, die het vereiste aantal willekeurige niet-herhalende getallen uit een bepaald interval produceert.

  • Hoe het aantal unieke waarden in een bereik te tellen
  • Willekeurige selectie van elementen uit een lijst

Laat een reactie achter