begin process at 2012 05 28 14:37:13
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > RANDOM D'UN TABLEAU

RANDOM D'UN TABLEAU


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :random, tableau, aléatoire Niveau :Débutant Date de création :13/03/2007 Date de mise à jour :16/03/2007 12:44:59 Vu :16 786

Auteur : PetoleTeam

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note


 Description

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

  • <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>
<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);


 Historique

16 mars 2007 12:44:59 :
voir les Explications finales

 Sources du même auteur

Source avec Zip CLEAR D'UN INPUT FILE
Source avec Zip FONCTION ALERT ET LES ACCENTS
Source avec Zip LECTURE ET RÉCUPÉRATION DES LIGNES D'UN FICHIER TEXTE
Source avec Zip Source avec une capture RECHERCHE ET COLORISATION, MISE EN SURBRILLANCE
Source avec Zip DIV QUI SUIT LE SCROLLING DE LA PAGE

 Sources de la même categorie

Source avec Zip Source avec une capture SLIDESHOW IMAGES ET TEXTES EN PUR JAVASCRIPT par ansuzpeorth
Source avec Zip INPUT TEXT AUTOMATIQUE CREATION SUPPRESSION par lycanges
Source avec Zip Source avec une capture TABLE_SV : TABLEAU DYNAMIQUE, MONTRER/CACHER COLONNE SUR DEM... par synanceia
COLONNES ADAPTABLES EN HAUTEUR par dronoide
Source avec Zip VECTEURS ET MATRICES: OUTILS GRAPHIQUES UTILES par william voirol

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture FORMULAIRE TABLEAU par vic511
Source avec Zip Source avec une capture TABLE_SV : TABLEAU DYNAMIQUE, MONTRER/CACHER COLONNE SUR DEM... par synanceia
IMPLEMENTATION DE RANDOM PERSONNALISÉ par ousous
Source avec Zip MOOTABLEAU par Miky76
NOMBRE ALÉATOIRE par gt_371

Commentaires et avis

Commentaire de Arto_8000 le 15/03/2007 02:58:55

À mon avis la façon la plus simple est avec la méthode sort du array. JesusOnline avait posté un exemple avec cete méthode.

http://www.javascriptfr.com/codes/DESORGANISE-TABLEAU-METHODE-SORT_33426.aspx

Commentaire de PetoleTeam le 16/03/2007 12:52:58

Bonjour Arto_8000,
plus simple surement MAIS...
Il y a deux aspects à considérer,

je commence par la vitesse même si ce n'est pas forcément ce que je privilégie, je préfère un code clair à un code moins lisible qui présente une rapidité à peine meilleure.

Jusqu'à des tableaux de 70 éléments la méthode SORT ARRAY est moins rapide mais prend l'avantage au delà.
Pour en finir avec la vitesse on notera que Opera sort toujours en tête devant IE et FireFox.
Mais je le répète ce n'est pas le point le plus important.

Le point le plus important reste la fréquence d'apparition des éléments du tableau.
En faisant un mélange de ce type je m'attend à ce que chaque élément est la même chance de se retrouver à toutes les places et ce à chaque tirage.
J'ai réalisé un test, 100000 passages sous IE, sur les deux routines et la à ma grande stupéfaction la méthode SORT ARRAY est catastrophique.

Ci dessous le tableau des résultats, je pense que cela ne sera pas très lisible mais bon.
- en ordonnée la position en entrée dans le tableau
- en abscisse la position en sortie dans le tableau
pour SORT ARRAY
04859;04847;04278;04711;05968;06477;04986;06045;07655;50174
09020;09176;09412;09359;05896;06809;10241;11711;15821;12555
08438;08313;06364;07684;16083;15224;07113;08305;10138;12338
13968;13642;18359;05952;05990;06499;15609;13866;02992;03123
10587;10633;09071;20296;05245;05709;05329;05937;24085;03108
11233;11389;08559;10331;30924;04919;05110;05444;05841;06250
08698;08637;06991;08160;10785;33779;05297;05418;05992;06243
12393;12261;15210;06610;07058;07758;34081;01492;01550;01587
10472;10777;13028;06258;06586;07110;06818;35842;01556;01553
10332;10325;08728;20639;05465;05716;05416;05940;24370;03069
- mini = 1492
- maxi = 50174 soit un chance sur deux au lieu d'un sur dix !
- ecart-type = 7790

pour Rand Tableau
09980;10209;09921;09918;09999;09966;10015;10125;09914;09953
09927;10024;09899;09968;10029;10136;09881;10061;10097;09978
09817;10050;10127;09919;09953;09923;10033;10038;09930;10210
09873;09913;09958;10140;10046;10024;10192;09984;09982;09888
10025;10002;10078;09952;09873;09959;10006;10017;10221;09867
10216;10127;09905;09961;09946;09941;09911;10057;10020;09916
10036;09893;09909;10033;10171;10011;10037;09895;09893;10122
09885;10016;10075;10048;10040;10040;10096;10025;09830;09945
10161;09897;10088;09990;09966;09978;10003;09947;10015;09955
10080;09869;10040;10071;09977;10022;09826;09851;10098;10166
- mini = 9817
- maxi = 10221
- ecart-type = 95
Y PAS PHOTO !!!

Donc plus simple peut être mais pas très efficace si l'on veut un tirage aléatoire.

Je pense que plus que la méthode SORT il s'agit plutôt du Math.round qui n'est pas judicieux.

Si cela intéresse je pourrais mettre la page de test dans un ZIP.
;0)

Commentaire de stfou le 16/03/2007 19:18:34

Merci PetoleTeam, je cherchai justement un code comme ça, sans passer par la méthode de jesusonline, un bout de code qui mélange, pas juste une fonction abstraite dont on ne connait pas le fonctionnement. 10/10

Commentaire de Arto_8000 le 17/03/2007 03:41:28

"pas juste une fonction abstraite dont on ne connait pas le fonctionnement"

Abstrait ? Le fonctionnement est très simple, la méthode sort est utilisé pour trié un tableau, mais on peut dire avec quel fonction on veut qu'il trie le tableau. Dans cette fonction si on fait qu'il retourne true ou false (1 ou 2, c'est le pourquoi du Math.round) de façon aléatoire le tableau va être mélangé d'une certaine façon.

J'ignorais jusqu'à quel point cette méthode pouvait être efficace, mais il semble quel à des défaults. Pour la rapidité, des deux fonctions le fait que la méthode sort soit built-in donne un avantage sur de plus long de tableau. Pour le reste je comprends plus ou moins ce que tu veux montrer, mais il semble que la méthode avec le sort donne des résultats moins aléatoires, c'est probablement du à la méthode qui est utilisé built-in pour trié les tableaux.

Commentaire de stfou le 01/04/2007 13:14:36

d'accord, array.sort mélange selon si on retourne -1,0 ou 1. mais comment utilise-t-il ces chiffres ? il déplace les valeur ? en tout cas moi je trouve cette source très utile. 11/10 ;)(déja voté dommage)

Commentaire de stfou le 09/04/2007 18:53:02

Re-bravo( je m'en lasse pas ;)).
Je suis surtout content car j'essayer sans succès de sortir une source de ce genre (pourtant au fonctionnement simple)...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Background aléatoire dans un tableau : HELP !! [ par dumbop84 ] coucou tout le monde..j'ai besoin d'aide..voila je suis pas du tout programmeur..mais comme y pas la source que je cherche ben j'ai essay&#233; de la Récupérer le contenu d'un tableau HTML dans un tableau JS [ par Skullface ] Salut,pour un script de tri de tableau de fa&#231;on dynamique, je r&#233;cup&#232;re les donn&#233;es text de ce tableau dans un tableau javascript ( tableau [ par steffyy ] J'ai fait un tableau dynamique en HTML inclus dans un div de taille&nbsp;pr&#233;f&#233;dini&nbsp;&lt;div id="Layer2" width: 700px; height:275px"&gt;J Evenement dans <table> [ par larion ] Bonjour, Dans un tableau, je d&#233;tecte l'entr&#233;e et la sortie du curseur : <TABLE onMouseOver='In()' onMouseOut='Out()' cellSpacing=0 cellPad Passage d'un tableau javascript en parametre d'une URL ? [ par scoubigee ] G un tableau javascript obtenu grace &#224; un formulaire que je veux envoyer a une nouvelle page, est-il possible d'envoyer ce tableau en parametre d Cacher Masquer un groupe de Div [ par fdthierry ] Bonjour,J'utilise ce code java:&lt;script language=JScript&gt;function ShowHideMenu(Div) {&nbsp;&nbsp; if (Div.style.display=='none') {&nbsp;&nbsp;&nb Aide pour un tableau [ par Lilou28 ] Bonjour, j'ai un tableau fait sous C# .asp avec des textbox dans chaque case de mon tableau et il faudrait que seule la 1&#232;re ligne apparaisse et FAIRE UN SIMPLE TABLEAU [ par malhivertman1 ] Bonjour a tousEn fait, je cherche a faire un tableau en javascript avec environ 150 cellules.Sur les lignes, j'ai les mois et sur les colonnes les ann liste déroulante et tableau [ par malhivertman1 ] Bonjour a tousJe dispose d'un tableau html et il faudrait que sur une autre page, je&nbsp; mette une liste deroulante avec des date qui irait cherch&# Acceder à un tableau sous Mozilla ?! [ par javert ] Le code&nbsp; : Tableau avec une cellule, le texte est modifi&#233; quand la souris passe dessus. Probleme : Le code fonctionne sous Firefox et sous


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales