Generare una serie di numeri disposti in modo casuale

posted Apr 19, 2011, 2:42 PM by roberto mensa   [ updated Apr 21, 2011, 8:12 AM ]
Presa la serie di numeri da 1 a n, si vuole generare una lista in cui i valori sono disposti in modo casuale (il problema di mischiare un mazzo di carte).
Il problema è stato risolto in molti modi. Ne propongo due, il primo trova spunto dalla splendida soluzione di Barbara in una discussione sull'NG del 2005. Non prevede colonne di appoggio.

In B1 scriviamo il numero di elementi che deve costituire la serie.

In A1 (generiamo il primo valore della serie) :
=INT(CASUALE()*$B$1)+1

=INT(RAND()*$B$1)+1

in A2:
=PICCOLO(SE(FREQUENZA($A$1:A1;RIF.RIGA($A$1:INDICE($A:$A;$B$1-1)))=0;RIF.RIGA($A$1:INDICE($A:$A;$B$1)));INT(CASUALE()*($B$1-RIF.RIGA(A1)))+1)

=SMALL(IF(FREQUENCY($A$1:A1,ROW($A$1:INDEX($A:$A,$B$1-1)))=0,ROW($A$1:INDEX($A:$A,$B$1))),INT(RAND()*($B$1-ROW(A1)))+1)

da confermare con Ctrl+Maiusc+Invio e trascinare in basso fino a necessità.

Un'altra soluzione di Fernando Cinquegrani utilizza una colonna di appoggio e una formula che restituisce una matrice di risultati.
Quindi, se la necessità è di generare una lista disordinata dei valori da 1 a 10 in A1:A10:
=CASUALE()

=RAND()

in B1:
=RANGO(A1:A10;A1:A10)

=RANK(A1:A10,A1:A10)

selezionare poi B1:B10 e confermare con Ctrl+Maiusc+Invio

Nel file Random_serie.xlsx sono presenti entrambe le soluzioni.

Ĉ
roberto mensa,
Apr 20, 2011, 8:57 AM
Comments