Nombres aleatoris sense repeticions

Formulació del problema

Suposem que hem de crear un conjunt de nombres enters aleatoris sense repeticions en un rang determinat de valors. Exemples sobre la marxa:

  • generant codis aleatoris únics per a productes o usuaris
  • assignar persones a tasques (cadascun de manera aleatòria de la llista)
  • permutació de paraules a la consulta de cerca (hola seo-shnikam)
  • jugar a la loteria, etc.

Mètode 1. Simple

Per començar, considerem una opció senzilla: hem d'obtenir un conjunt aleatori de 10 nombres enters de l'1 al 10. Utilitzant la funció integrada a Excel ENTRE EL CAS (BORDA ENTRE) la singularitat no està garantida. Si l'introduïu en una cel·la de full i la copieu 10 cel·les, es poden repetir fàcilment:

Nombres aleatoris sense repeticions

Per tant, anirem per un altre camí.

Totes les versions d'Excel tenen una funció RANK (RANG), destinat a la classificació o, en altres paraules, a determinar la primera posició d'un nombre en un conjunt. El nombre més gran de la llista té rang=1, el segon de la part superior té rang=2, i així successivament.

Introduïm la funció a la cel·la A2 SLCHIS (RAND) sense arguments i copieu la fórmula cap avall 10 cel·les. Aquesta funció ens generarà un conjunt de 10 nombres fraccionaris aleatoris de 0 a 1:

Nombres aleatoris sense repeticions

A la següent columna introduïm la funció RANKper determinar la posició a la classificació per a cada nombre aleatori rebut:

Nombres aleatoris sense repeticions

Obtenim a la columna B el que volíem: qualsevol nombre desitjat de nombres enters aleatoris no repetits de l'1 al 10.

Purament teòricament, pot sorgir una situació quan SLCHIS ens donarà dos nombres aleatoris idèntics a la columna A, els seus rangs coincidiran i obtindrem una repetició a la columna B. No obstant això, la probabilitat d'aquest escenari és extremadament petita, tenint en compte que la precisió és de 15 decimals.

Mètode 2. Complicat

Aquest mètode és una mica més complicat, però només utilitza una fórmula de matriu. Suposem que hem de crear una llista de 9 enters aleatoris que no es repeteixen en el rang d'1 a 50 en un full.

Introduïu la fórmula següent a la cel·la A2, feu clic al final Ctrl + Maj + Retorn (per introduir-lo com a fórmula de matriu!) i copieu la fórmula fins al nombre de cel·les desitjat:

Nombres aleatoris sense repeticions

Mètode 3. Macro

I, per descomptat, podeu resoldre el problema mitjançant la programació en Visual Basic. En un dels vells articles sobre el mostreig aleatori, ja vaig citar la funció macro de matriu Lotto, que produeix el nombre necessari de números aleatoris no repetits d'un interval determinat.

  • Com comptar el nombre de valors únics en un interval
  • Selecció aleatòria d'elements d'una llista

Deixa un comentari