Numerele aleatoare fără repetiții

Declarația problemei

Să presupunem că avem nevoie pentru a crea un întreg set de numere aleatoare, fără repetiții într-un anumit interval de valori. Exemple de mișcare:

  • genera coduri aleatoare unice pentru produse sau utilizatori
  • numirea persoanelor cu privire la sarcina (fiecare aleatoriu dintr-o listă)
  • permutare de cuvinte în interogarea de căutare (SEO-Schnick hi)
  • joc bingo, etc.

1. Metoda simplă

În primul rând, ia în considerare cea mai simplă opțiune: avem nevoie pentru a obține un set aleator de 10 numere întregi de la 1 la 10. Utilizarea încorporat în Excel funcții RANDBETWEEN (RANDBETWEEN) nu garantează unicitate. Dacă îl introduceți într-o celulă din foaia de lucru, și copiați până la 10 celule, se poate întâmpla cu ușurință reluări:

Numerele aleatoare fără repetiții

Așa că am merge în altă parte.

În toate versiunile de Excel este o funcție de RANK (RANG). destinate clasament sau cu alte cuvinte, determinarea unui număr de poziție de top din set. Pentru cel mai mare număr din lista de rang = 1, al doilea de sus are un rang = 2, etc.

Noi introducem functia celula A2 RAND (RAND), fără argumente și formula de copiere în jos la 10 celule. Această funcție ne va genera un set de 10 numere fractionare aleatoare între 0 și 1:

Numerele aleatoare fără repetiții

În coloana adiacentă, introducem funcția RANK. pentru a determina poziția în clasament pentru fiecare au primit numere aleatorii:

Numerele aleatoare fără repetiții

Obținem coloana din ceea ce au vrut - orice număr dorit de non-repetarea numere întregi aleatoare 1 - 10.

Teoretic, o situație poate apărea atunci când RAND ne va da două numere aleatoare identice din coloana A și rândurile lor se potrivesc și am repetat în coloana B. Cu toate acestea, probabilitatea acestui scenariu este extrem de scăzut. având în vedere faptul că precizia este de 15 zecimale.

Metoda 2: Dificil

Această metodă este puțin mai complicat, dar utilizează doar o singură formulă matrice. Să presupunem că avem nevoie pentru a crea o listă pe o foaie de 9-repetarea numere întregi aleatoare în intervalul 1-50.

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

Numerele aleatoare fără repetiții

Metoda 3. Macro

Și, desigur, este posibil să se rezolve problema prin programare în Visual Basic. Într-unul din articolele vechi despre eșantion aleatoriu am dat deja macro matrice funcție Loto. care emite un număr necesar de non-repetarea numere aleatoare într-un interval predeterminat.

Link-uri conexe