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 : 9508
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



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

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} GESTION DE STOCK
Bonjour à tous! Voici un petit prog pour gérer un stock d'article, avec une recherche par référence...

{Delphi} FONCTION SPLIT
Du fait que les fonctions Split que j'ai trouvé sur le web ne marchait pas correctement, j'ai décidé...

{Visual Basic, VB6, VB.NET, VB 2005} HAPPY MEMORY
C’est un jeu pour améliorer la capacité de la mémoire humaine … Le principe est simple: lancez une ...

{PHP} TRANSFORMER UN TABLEAU D'OBJETS EN TABLEAU UNIDIMENSIONNEL
Pour les besoins d'un webmail que je remets à jour j'avais besoin de traiter les tableaux d'objets r...

{PHP} TRANSFORMER UN TABLEAU MULTIDIMENSIONNEL EN TABLEAU UNIDIMENSIONNEL
Quand je me suis retrouvé devant le problème de devoir gérer un tableau à X dimensions sans connaîtr...

{Delphi} MIND READER
c'est un jeu basé sur des notions mathématiques par exemple le programme va te demander de choisir ...

{Javascript / DHTML} MENU VERTICAL DYNAMIQUE
Ce menu se deplace sur l'axe des ordonnées selon la position du curseur sur ce meme axe. Le menu est...

{C / C++ / C++.NET} TRIANGLE DE PASCAL ET DEVELLOPEMENT DE POLYNOME
Alors voilà il y a une semaine je me suis mis a chercher une source c++ toutes faites me permettant ...

{Visual Basic, VB6, VB.NET, VB 2005} YM-LIGHT-WORDPAD TABLEAU IMAGES ET SURLIGNAGE
[VB6] Un p'tit WordPad (1 de plus) mais avec fonctions insérer un tableau, surlignage grâce à la man...