Numere aleatorii fără repetări

Formularea problemei

Să presupunem că trebuie să creăm un set de numere aleatoare întregi fără repetări într-un interval dat de valori. Exemple din mers:

  • generarea de coduri aleatorii unice pentru produse sau utilizatori
  • atribuirea de persoane la sarcini (fiecare aleatoriu din listă)
  • permutarea cuvintelor în interogarea de căutare (hello seo-shnikam)
  • juca la loto etc.

Metoda 1. Simplă

Pentru început, să luăm în considerare o opțiune simplă: trebuie să obținem un set aleatoriu de 10 numere întregi de la 1 la 10. Folosind funcția încorporată în Excel INTRE CAZ (MARCHIA ÎNTRE) unicitatea nu este garantată. Dacă îl introduceți într-o celulă de foaie și o copiați în 10 celule, atunci se pot întâmpla cu ușurință repetări:

Numere aleatorii fără repetări

Prin urmare, vom merge pe altă cale.

Toate versiunile de Excel au o funcție RANG (RANG), destinată ierarhării sau, cu alte cuvinte, stabilirii poziției superioare a unui număr dintr-un set. Cel mai mare număr din listă are rang=1, al doilea din top are rang=2 și așa mai departe.

Să introducem funcția în celula A2 SLCHIS (RAND) fără argumente și copiați formula în jos 10 celule. Această funcție ne va genera un set de 10 numere fracționale aleatorii de la 0 la 1:

Numere aleatorii fără repetări

În coloana următoare introducem funcția RANGpentru a determina poziția în clasament pentru fiecare număr aleatoriu primit:

Numere aleatorii fără repetări

Obținem în coloana B ceea ce ne-am dorit – orice număr dorit de numere întregi aleatoare nerepetate de la 1 la 10.

Pur teoretic, poate apărea o situație când SLCHIS ne va da două numere aleatoare identice în coloana A, rangurile lor se vor potrivi și vom obține o repetare în coloana B. Probabilitatea unui astfel de scenariu este însă extrem de mică, dat fiind faptul că precizia este de 15 zecimale.

Metoda 2. Complicată

Această metodă este puțin mai complicată, dar folosește o singură formulă matrice. Să presupunem că trebuie să creăm o listă de 9 numere întregi aleatorii care nu se repetă în intervalul de la 1 la 50 pe o foaie.

Introduceți următoarea formulă în celula A2, faceți clic la sfârșit Ctrl + Shift + Enter (pentru a o introduce ca formulă matrice!) și copiați formula în numărul dorit de celule:

Numere aleatorii fără repetări

Metoda 3. Macro

Și, desigur, puteți rezolva problema folosind programarea în Visual Basic. Într-unul dintre articolele vechi despre eșantionarea aleatorie, am citat deja funcția macro-matrice Lotto, care produce numărul necesar de numere aleatoare nerepetate dintr-un interval dat.

  • Cum să numărați numărul de valori unice dintr-un interval
  • Selectarea aleatorie a elementelor dintr-o listă

Lasă un comentariu