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 : 14474
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} TRI PAR INSERTION
Les listes triées sont très pratiques pour des quantités de données limitées : une liste semble pouv...

{C / C++ / C++.NET} ALGORITHME DE TRI D'UN TABLEAU PAR ORDRE CROISSANT OU DÉCROISSANT.
Bonjour, Le code source que je vais présenter est simple mais on y pense pas tout le temps. Il cla...

{Visual Basic, VB6, VB.NET, VB 2005} SÉRIALISTION - DÉSERIALISATION DE TABLEAUX ET COLLECTIONS
Après la source pour la sérialisation - désérialisation d'une LameGrid (que j'ai amélioré d'ailleurs...

{Delphi} UTILISER LES COMPOSANTS PAR LEURS NUMÉROS
Le principe : 1. Parcourir tous les composants d'une forme. 2. Y choisir le composant voulu et l'i...

{Javascript / DHTML} MOOTABLEAU
Une classe mooTools qui transforme une balise table en un ensemble div/tables qui permet de visualis...

{Visual Basic, VB6, VB.NET, VB 2005} JEU DE PENDU (COUIC 1 DE +)
Lundi, 01 Février 2010 04:58 un petit jeu de pendu réalisé sous vb 2008 express But du jeu : ...

{PHP} EXÉCUTER DES REQUETE STYLE SQL SUR UN ARRAY
La classe myArray, pour l'instant en version "j'ai codé comme un cochon" permet l'exécution de requê...

{Javascript / DHTML} JEU DE COULEURS DANS UN TABLEAU À 3 DIMENSION
Un tableau à 3 dimensions(Plusieurs tableau de 2 dimensions) des couleurs existante sur un PC. Jusqu...

{Visual Basic, VB6, VB.NET, VB 2005} LE 421 AVEC CLASSEMENT V2
le 421 avec prise en compte du classement ici fonction lancer de dé select case streamreader cod...