Come si realizza il mescolamento casuale di un array?

Il metodo che sto per mostrarti è definito come “algoritmo per una permutazione casuale di un insieme finito“, ideato da Ronald Fisher e Frank Yates, ed ottimizzato successivamente.

Il procedimento è semplice, alla riga 9 viene dichiarato e definito un array ordinato di elementi numerici da 1 a 10. Dalla riga 12 alla 18, tale array viene mescolato con elementi memorizzati in posizioni, elaborate in modo casuale, diverse da quelle definite alla riga 9.

Cioè alla riga 10 viene generato un numero casuale da 0 a (10–1), questo perchè in quasi tutti i linguaggi di programmazione c like, gli array iniziano dalla posizione 0 e non dalla 1, per cui un array di 10 elementi inizia alla posizione 0 e termina alla posizione 9.

Alla riga 16, il valore dell’array, processato di volta in volta dalla 0 alla 9, viene scambiato con il valore dell’array alla posizione casuale.

Dalla riga 21 alla 23, l’array viene stampato a video.

Il seguente è un esempio in Javascript, potrai copiare ed incollare il codice sottostante in un file, ad esempio “index.html”, ed eseguirlo tramite Chrome o qualsiasi altro browser, per cui non hai bisogno di un compilatore o di un interprete.

<html>
   <head>
      <title>Mischiare un Array in Javascript</title>
   </head>
   <body>
      <p>
         <script language="javascript" type="text/javascript">
            //array ordinato di valori
            var a = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]; 
 
            // mescola array
            for(var k=0; k<a.length; k++) {
               posizioneCasuale = Math.floor(Math.random() * k); 
               // scambia a[k] con a[posizioneCasuale]
               tmp = a[k];
               a[k] = a[posizioneCasuale];
               a[posizioneCasuale] = tmp;
            }
 
            // stampa array disordinato randomicamente
            for (var i=0; i<a.length; i++) {
               document.write("Elemento " +i+ " = " +a[i]+ "<br />");
            }
         </script> 
      </p> 
   </body>
</html>
Seguimi su
Latest posts by Antonio Lamorgese (see all)

Antonio Lamorgese

Amministratore di rete, programmatore ed esperto di pratiche SEO. Dopo anni di esperienza nel settore, ho ideato un generatore di codice PHP Scopri di più su https://www.phpcodewizard.it.