Random d'un tableau

Contenu du snippet

Hello Every <BODY>

La demande se faisant sentir sur le forum, je vous livre une fonction permettant le tri aléatoire d'un tableau.
Cela aurait pu être un prototype au Array mais la je vous laisse faire.

L'exemple est fourni avec un tableau de nombre, mais tout tableau fait l'affaire.

Bonne utilisation
;O)

Source / Exemple :


<html>
<head>
<title>Tri aléatoire d'un tableau</title>
<style type="text/css">
body{
  font-size : 13px;
  font-family : Verdana;
  margin : 10px;
}
</style>
<script type="text/javascript">
//-------------------------------
// entree : le tableau a randommer
// sortie : le tableau randomme
//-------------------------------
function Rand_Tableau( tab_){
  var i;
  var Num;
  var Nbr = tab_.length;
  var Tab = new Array();
  //-- Copie le contenu
  Tab = Tab.concat(tab_);
  //-- Lance la boucle
  while( Nbr> 0){
    //-- Recup nombre aleatoire
    Num = Math.floor(Math.random() * Nbr);
    //-- 1 de moins a traiter
    Nbr--;
    //-- Stock l'element tire
    szTmp = Tab[Num];
    //-- Decalage les valeur du tableau
    for( i= Num; i < Nbr; i++)
      Tab[i] = Tab[i+1]
    //-- Stock l'element tire en fin
    Tab[ Nbr] = szTmp;
  }
  //-- On peut remettre dans l'ordre du tirage
  Tab.reverse();
  //-- Retourne resultat
  return( Tab);
}
//------------------
// Just for Test
//------------------
function Fct_Test(){
  var Html ="";
  var Tab = new Array();
  //-- Init du Tableau
  for( var i =0; i < 10; i++)
    Tab[i] = i;
  //-- Random du tableau
  Tab = Rand_Tableau( Tab);
  //-- Fomattage sortie
  for( var i=0; i < Tab.length; i++)
    Html += Tab[i] +"   "
  //-- Affichage resultat
  document.getElementById('D_RESULT').innerHTML += "<br>" +Html;
}
</script>
</head>
<body>
<h3>Tri aléatoire d'un tableau</h3>
<input type = "button" value = "Lance" onclick = "Fct_Test();">
<div id = "D_RESULT"></div>
</body>
</html>

Conclusion :


Objet modif 1:
j'ai remis les lignes clearées un peu vite dans la source concernant la copie du contenu du fichier afin que le tableau en entrée ne soit pas modifié.

vous pouvez donc faire un appel
Tab_1 = Ran_Tableau( Tab_0);

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.