Génération d'une permutation aléatoire, sans retirage

Contenu du snippet

C'est un petit algorithme qui permet de distribuer aléatoirement les nombres de 1 à 10 dans un tableau.
Si vous voulez plus grand, il suffit de changer la valeur de DIM.
La case 0 du tableau ne semble servir à rien, mais c'est une case sentinelle. Elle sert à d'autres algorithmes comme des tris.

Source / Exemple :


#include "stdafx.h"
#include "stdlib.h"
#include "time.h"

#define DIM 10

int main(int argc, char* argv[])
{

    int i,j, t[DIM+1];

    t[1] = 1;
    srand(unsigned(time(NULL)));

    // Tirage
    for ( i = 2; i <= DIM; i++ ) {
        j = rand()%i+1;
        t[i] = t[j];
        t[j] = i;
    }

    // Affichage
    for ( i = 1; i <= DIM; i++ )
        printf("t[%d] = %d\n", i, t[i]);
    return 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.