Problème random tableau en C

Résolu/Fermé
fab_lous Messages postés 6 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 mai 2007 - 6 avril 2007 à 18:36
 aya_pro - 21 mai 2008 à 00:18
Bonjour,
Je suis nouveau dans cette bien vaste communauté d'adeptes de la programmation.
Je suis actuellement en train de mettre en place une procédure en C pour initialiser un tableau de taille fixe tab[N] avec des chiffres aléatoires compris entre 1 et 5.
J'ai déclaré une constante N=5.

J'aimerais donc pouvoir initialiser ce tableau avec des valeurs comprises entre 1 et 5. La difficulté est que je ne veux pas que ces chiffres se retrouvent plusieurs fois dans le tableau puisque la finalité c'est de pouvoir le trier par la suite.

Voici ma procédure:

void shuffle(int tab[N-1]){
int val,i;
for(i=0;i<N;i++){
srand((unsigned) time(NULL));
val=rand()%N;
tab[i]=val;
}
}

Je l'ai créé à partir de documentations glanées par-ci par-là.
A priori srand() sert à vérifier que la valeur affectée précédemment ne soit pas réutilisée.

Quelqu'un peut m'aider?

Merci par avance.
A voir également:

4 réponses

ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
6 avril 2007 à 20:49
Bonsoir,

void shuffle(int tab[N]){
  int i,j,deja;
  
  /* A prevoir ailleurs */
  srand((unsigned) time(NULL));

  i=0;
  while (i<N) {
    tab[i]=rand()%N;
    deja=0;
    for (j=0;j<i;j++) {
      if (tab[j]==tab[i]) {
        deja=1;
        break;
      }
    }
    if (deja==0)
       i++;
  }
}


Enfin un truc dans le genre :p
Et puis le srand(), met le dans le main plutôt sinon tu vas réinitialiser le générateur de nombres aléatoires à chaque appelle de la fonction.
1
vlmath Messages postés 794 Date d'inscription vendredi 20 octobre 2006 Statut Contributeur Dernière intervention 4 septembre 2011 160
6 avril 2007 à 20:35
Salut,

Je ne crois pas que srand() te permette de controller si le nombre soit déjà paru.
Il me semble qu'il sert à initialiser la fonction rand().

Perso, je fairais manuellement le test sur tout le tableau pour voir si le nombre à déjà été utilisé.

@++
0
fab_lous Messages postés 6 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 mai 2007 3
9 avril 2007 à 22:07
Merci pour tout.
J'ai casé srand() juste avant l'appel de la procédure dans le main() et ça tourne nickel!

Bye,
@+
0
bonjour,
voilà je suis encort en 1er année alort debutante et j'ai un projet sur les differents methodes de tri plus présicement (sell, insertion, extraction, bull)
et j'ai besoin d'aide pour ces programme en C et en utilisant la fonction random que je n'est pas comprise alort si vous pouvais m'aider merçi d'avance
0