Site icon Antonio Lamorgese

Come si realizza il mescolamento casuale di un array

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.
di Antonio Lamorgese

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. Esistono molti algoritmi che eseguono compiti molto diffusi e di conseguenza già discussi e pensati da altri sviluppatori. Per lo scopo di questa guida, dovrai tenere sempre sotto traccia l’algoritmo riportato più avanti nell’articolo.

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>
Tutorial C++ Lezione 10 - Vettori (Matrici unidimensionali)
Come trattare i vettori in C

LEGGI ANCHE: Il miglior modo di fare pratica come sviluppatore web


Exit mobile version