Numeri casuali senza ripetizioni

Formulazione del problema

Supponiamo di dover creare un insieme di numeri casuali interi senza ripetizioni in un determinato intervallo di valori. Esempi in movimento:

  • generazione di codici casuali univoci per prodotti o utenti
  • assegnare le persone ai compiti (ognuno casualmente dall'elenco)
  • permutazione delle parole nella query di ricerca (ciao seo-shnikam)
  • giocare al lotto ecc.

Metodo 1. Semplice

Per cominciare, consideriamo una semplice opzione: dobbiamo ottenere un insieme casuale di 10 numeri interi da 1 a 10. Usando la funzione incorporata in Excel TRA IL CASO (BORDO TRA) l'unicità non è garantita. Se lo inserisci in una cella di un foglio e lo copi per 10 celle, le ripetizioni possono facilmente verificarsi:

Numeri casuali senza ripetizioni

Pertanto, andremo dall'altra parte.

Tutte le versioni di Excel hanno una funzione RANGO (SUONÒ), destinato alla graduatoria o, in altre parole, alla determinazione della prima posizione di un numero in un set. Il numero più grande nell'elenco ha rango=1, il secondo in alto ha rango=2 e così via.

Inseriamo la funzione nella cella A2 SLCHIS (RANDO) senza argomenti e copia la formula in basso di 10 celle. Questa funzione ci genererà un insieme di 10 numeri frazionari casuali da 0 a 1:

Numeri casuali senza ripetizioni

Nella colonna successiva introduciamo la funzione RANGOper determinare la posizione in classifica per ogni numero casuale ricevuto:

Numeri casuali senza ripetizioni

Otteniamo nella colonna B ciò che volevamo: qualsiasi numero desiderato di interi casuali non ripetuti da 1 a 10.

A livello puramente teorico, può sorgere una situazione in cui SLCHIS ci darà due numeri casuali identici nella colonna A, i loro ranghi corrisponderanno e otterremo una ripetizione nella colonna B. Tuttavia, la probabilità di uno scenario del genere è estremamente piccola, dato che l'accuratezza è di 15 cifre decimali.

Metodo 2. Complicato

Questo metodo è leggermente più complicato, ma utilizza solo una formula di matrice. Diciamo che dobbiamo creare un elenco di 9 interi casuali non ripetuti nell'intervallo da 1 a 50 su un foglio.

Immettere la seguente formula nella cella A2, fare clic alla fine CTRL + MAIUSC + INVIO (per inserirlo come una formula di matrice!) e copia la formula fino al numero di celle desiderato:

Numeri casuali senza ripetizioni

Metodo 3. Macro

E, naturalmente, puoi risolvere il problema usando la programmazione in Visual Basic. In uno dei vecchi articoli sul campionamento casuale, ho già citato la funzione macro dell'array Lotto, che produce il numero richiesto di numeri casuali non ripetuti da un determinato intervallo.

  • Come contare il numero di valori univoci in un intervallo
  • Selezione casuale di elementi da un elenco

Lascia un Commento