Liczby losowe bez powtórzeń

Sformułowanie problemu

Załóżmy, że musimy stworzyć zbiór liczb całkowitych losowych bez powtórzeń w zadanym zakresie wartości. Przykłady w podróży:

  • generowanie unikalnych losowych kodów dla produktów lub użytkowników
  • przydzielanie osób do zadań (każda losowo z listy)
  • permutacja słów w zapytaniu (hello seo-shnikam)
  • gra w lotto itp.

Metoda 1. Prosta

Na początek rozważmy prostą opcję: musimy uzyskać losowy zestaw 10 liczb całkowitych od 1 do 10. Korzystając z funkcji wbudowanej w Excela MIĘDZY SPRAWĄ (KRZEW MIĘDZY) unikatowość nie jest gwarantowana. Jeśli wprowadzisz go do komórki arkusza i skopiujesz 10 komórek, łatwo mogą się powtórzyć:

Liczby losowe bez powtórzeń

Dlatego pójdziemy w drugą stronę.

Wszystkie wersje programu Excel mają funkcję RANGA (ZAKRES), przeznaczony do rankingu, czyli określania najwyższej pozycji liczby w zestawie. Największa liczba na liście ma rangę=1, druga na górze ma rangę=2 i tak dalej.

Wprowadźmy funkcję w komórce A2 SLCHIS (SKRAJ) bez argumentów i skopiuj formułę w dół o 10 komórek. Ta funkcja wygeneruje nam zestaw 10 losowych liczb ułamkowych od 0 do 1:

Liczby losowe bez powtórzeń

W następnej kolumnie przedstawiamy funkcję RANGAustalenie pozycji w rankingu dla każdej otrzymanej liczby losowej:

Liczby losowe bez powtórzeń

W kolumnie B otrzymujemy to, co chcieliśmy – dowolną liczbę niepowtarzających się losowych liczb całkowitych od 1 do 10.

Czysto teoretycznie może dojść do sytuacji, gdy: SLCHIS da nam dwie identyczne liczby losowe w kolumnie A, ich rangi będą się zgadzać i otrzymamy powtórzenie w kolumnie B. Jednak prawdopodobieństwo takiego scenariusza jest niezwykle małe, biorąc pod uwagę fakt, że dokładność wynosi 15 miejsc po przecinku.

Metoda 2. Skomplikowana

Ta metoda jest nieco bardziej skomplikowana, ale używa tylko jednej formuły tablicowej. Powiedzmy, że musimy utworzyć listę 9 niepowtarzających się losowych liczb całkowitych z zakresu od 1 do 50 na arkuszu.

Wprowadź następującą formułę w komórce A2, kliknij na końcu Ctrl + Shift + Enter (aby wprowadzić ją jako formułę tablicową!) i skopiuj formułę do żądanej liczby komórek:

Liczby losowe bez powtórzeń

Metoda 3. Makro

I oczywiście możesz rozwiązać ten problem za pomocą programowania w Visual Basic. W jednym ze starych artykułów o losowym losowaniu przytoczyłem już funkcję makra Lotto array, która generuje wymaganą liczbę losowych, nie powtarzających się liczb z danego interwału.

  • Jak policzyć liczbę unikalnych wartości w zakresie?
  • Losowy wybór elementów z listy

Dodaj komentarz