Les Snippets

Connexion

Mélanger un tableau

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 22/03/2006 11:50:00 et initié par sebmafate [Liste]
Date de mise à jour : 28/03/2006 23:27:34
Vue : 12640
Catégorie(s) : Algorithme
Langages dispo pour ce code :
- C# 1.x, C# 2.x
- PHP 4, PHP 5
- Javascript
- VB 2005, VB.NET 1.x
- C# 1.x, C# 2.x
- Python
- Javascript
- VB6, VBA



Langage : C# 1.x , C# 2.x
Date ajout : 22/03/2006
Posté par sebmafate [Liste]

public class Melangeur : IComparer {
   private static Random rnd;
      static Melangeur() {
         rnd = new Random();
   }

   public int Compare(object x, object y) {
      if (Object.Equals(x, y))
         return 0;
      else {
         return rnd.Next(-1, 1);
      }
   }   
}

// Utilisation :
int[] toto = new int[16];
Array.Sort(toto, new Melangeur());


Langage : PHP 4 , PHP 5
Date ajout : 22/03/2006
Posté par malalam [Liste]

function Melangeur ($aTableau) {
  shuffle ($aTableau);

  return $aTableau;
}

Langage : Javascript
Date ajout : 22/03/2006
Posté par jesusonline [Liste]



if (!Array.prototype.duplicate) 
    Array.prototype.duplicate = function() { return [].concat(this);} 

if (!Array.prototype.sortRandom) 
    Array.prototype.sortRandom = function() { this.sort(function(elmt1, elmt2) { return ((2 * Math.round(Math.random())) - 1) }); } 

if (!Array.prototype.getRandomlySort)  
    Array.prototype.getRandomlySort= function() { return this.duplicate().sortRandom();} 

Langage : VB.NET 1.x , VB 2005
Date ajout : 23/03/2006
Posté par Nurgle [Liste]
Public Class Melangeur 
  Implements System.Collections.IComparer
  Private Shared rnd As Random 
  Shared Sub New()
      rnd = New Random() 
  End Sub

  Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare 
      If Object.Equals(x, y) Then
          Return 0 
      Else
          Return rnd.Next(-1, 1) 
      End If
  End Function 
End Class
 

' Et pour l'utiliser :
Dim Toto() As Integer = {1, 2, 5, 9, 10, 5, 3}
Array.Sort(Toto, New Melangeur())


Langage : C# 1.x , C# 2.x
Date ajout : 28/03/2006
Posté par coq [Liste]
DateMAJ : 28/03/2006

private static readonly Random _shuffleRnd = new Random(); // nécessaire pour la méthode ShuffleArray
public static void ShuffleArray(object[] array) 
{ 
    int arrayLength = array.Length; 
    // parcours de la liste en partant de la fin


    for (int i = arrayLength - 1; i > 1; --i) 
    {
        // tirage au sort d'un index entre 0 et la valeur courante de "i"
        int randomIndex = _shuffleRnd.Next(i); 
        // intervertion des éléments situés aux index "i" et "randomIndex"
        object temp = array[i]; 
        array[i] = array[randomIndex];
        array[randomIndex] = temp;
    }
}

Remarque :
Permet d'éviter le problème que l'on peut des fois rencontrer avec l'algo QuickSort utilisé par Array.Sort
Langage : Python
Date ajout : 29/10/2006
Posté par pacificator [Liste]
import random
listeAMelanger = range(50)
random.shuffle(liste)

Langage : Javascript
Date ajout : 13/03/2007
Posté par PetoleTeam [Liste]
//-------------------------------
// entree : le tableau a randommer
// sortie : le tableau randomme
//-------------------------------
function Rand_Tableau( tab_){
  var i;
  var Num;
  var Nbr = tab_.length;
  var Tab = tab_;
  //-- Lance la boucle
  while( Nbr> 0){
    //-- Recup nombre aleatoire
    Num = Math.floor(Math.random() * Nbr);
    //-- 1 de moins a traiter
    Nbr--;
    //-- Stock element tire
    szTmp = Tab[Num];
    //-- Decalage des valeurs 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);
}
EXEMPLE d'appel

  //-- Random du tableau
  Tab = Rand_Tableau( Tab);
Langage : VB6 , VBA
Date ajout : 12/05/2009
Posté par PCPT [Liste]
Function Shuffle(ByRef atData() As String)
' nécessite la fonction GetSingleValue
'  http://www.codyx.org/snippet_recuperer-aleatoirement-valeur-unique-tableau_348.aspx#1098
    Randomize Timer
    
    Dim atRet() As String, i As Integer, s As String
    ReDim atRet(LBound(atData) To UBound(atData))
    
    For i = LBound(atRet) To UBound(atRet)
        GetSingleValue atData, s
        atRet(i) = s
    Next i
    
    atData = atRet
    Shuffle = atRet
    Erase atRet
End Function
Remarque :
le tableau en paramètre doit être dimensionné dynamiquement

Snippets en rapport avec : Tableau, Melanger



Codes sources en rapport avec : Tableau, Melanger

{Visual Basic, VB6, VB.NET, VB 2005} COMPRESSION
Fonction pour comprimer un tableau de byte...

{Visual Basic, VB6, VB.NET, VB 2005} EXPORT TABLEAU EXCEL EN BBCODE
Petite source en vba excel permettant d'exporter le tableau Excel en BBcode (tableau basic, seul l'é...

{Visual Basic, VB6, VB.NET, VB 2005} TRI AVEC VISUALISATION
Voila une source pour trié des chiffres dans un tableau a 1 dimensions. Il y a plusieurs méthodes de...

{Javascript / DHTML} TRI DÉCROISSANT ET CROISSANT D'UN TABLEAU DYNAMIQUE REMPLIE PAR UN INTERNAUTE
Coucou tout le monde, bonje ne l'ai pas trouvé sur ce site donc peut-être qu'il n'y est pas : j'a...

{Javascript / DHTML} PALETTE DE COULEURS
Une palette de couleurs dans un bloc de type div. Le script est fait de trois boucles les unes dan...

{Javascript / DHTML} TEXTAREA : LIMITER LA LARGEUR ET LA HAUTEUR DU TEXTE SAISIE
La plupart des contrôles de saisie dans un champ textarea se limite à la longueur du texte. L'int...

{JAVA / J2EE} NOMBRES PREMIERS PAR LE CRIBLE D'ERATOSTHÈNE VERSION OPTIMISÉE
Pour trouver tous les nombres premiers de 2 à Max, le principe est le suivant : 1. Construire l'ens...

{C / C++ / C++.NET} [C][RTF] EXEMPLE DE TABLEAU EN RTF (POUR RICHEDIT)
Vue qu'il y a beaucoup de demande, pour faire des tableaux et que ce n'est pas très compliqué ^^, je...

{Visual Basic, VB6, VB.NET, VB 2005} TABLEAU INITIALISE
Je cherche une fonction me permettant de savoir si mes tableaux dynamiques [ ex: dim Tableau() as st...

{Visual Basic, VB6, VB.NET, VB 2005} GESTION DYNAMIQUE DES ITEMS - BIEN PLUS INTERESSANT QUE LES TABLEAUX DYNAMIQUES
Tout le monde a recours dans la programmation à des tableaux dynamiques, besoin de validation de val...