Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1262 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C]Remplir un tableau d'entiers uniques aléatoirement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C]Remplir un tableau d'entiers uniques aléatoirement

n°1546458
Jericho
Posté le 21-04-2007 à 23:31:51  profilanswer
 

Bonjour,  
 
Je cherche un algo qui me permettrait de remplir un talbeau d'entiers uniques aléatoirement (comme dit dans le titre). Je sais que c'est tout con et que sa se trouve partout mais ce n'est pas toujours ce qui a l'air le plus simple à faire qui l'est. :)
 
Donc j'ai un  
 
int tab[5] et je veux qu'il contienne un truc du genre 3, 1, 4, 2, 5
 
Merci d'avance pour votre aide!
 
Edit:  
 
J'ai fait cela :  
 

Code :
  1. for (i = 0; i < 52; i++)
  2.             {
  3.                 carteordre[i] = rndm.Next(53); // (oui c'est du CSharp en fait mais ca revient au même)
  4.                 for (j = 0; j < 52; j++)
  5.                 {
  6.                     if (carteordre[j] == carteordre[i])
  7.                     {
  8.                         carteordre[i] = rndm.Next(53);
  9.                         j = 0;
  10.                     }
  11.                 }
  12.             }


 
Mais ca ne fonctionne pas, ca freez et c'est loin d'être optimisé!!


Message édité par Jericho le 21-04-2007 à 23:33:21
mood
Publicité
Posté le 21-04-2007 à 23:31:51  profilanswer
 

n°1546463
zecrazytux
Posté le 21-04-2007 à 23:57:28  profilanswer
 

et pourquoi pas du rand() tout simplement ?


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
n°1546467
Darko_
Posté le 22-04-2007 à 00:03:33  profilanswer
 

Gros malin, dans ta boucle sur j, à un moment t'aura bien i==j. Et donc carteordre[j] == carteordre[i] au moins une fois par boucle et hop on remet j à 0 et on recommence... C'est normal que ça ne finisse pas;)
Si tu modifies la ligne :  
if (carteordre[j] == carteordre[i])
en :
if (carteordre[j] == carteordre[i] && i!=j) ça devrait mieux marcher.
 
En disant ça je me rend compte que c'est même pas la peine de parcourir le tableau en entier... Il suffit de le parcourir jusqu'à i, le dernier élément initialisé...

Code :
  1. for (i = 0; i < 52; i++)
  2. {
  3.    arteordre[i] = rndm.Next(53);
  4.    for (j = 0; j < i; j++)
  5.    {
  6.       if (carteordre[j] == carteordre[i])
  7.       {
  8.       carteordre[i] = rndm.Next(53);
  9.       j= 0;
  10.       }
  11.    }
  12. }


même plus besoin de vérifier si i!=j

n°1546532
Jericho
Posté le 22-04-2007 à 11:44:16  profilanswer
 

Waw, du bon boulot ca!, ca fonctionne niquel!
 
Merci beaucoup  :)

n°1546534
Darko_
Posté le 22-04-2007 à 11:59:25  profilanswer
 

:)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C]Remplir un tableau d'entiers uniques aléatoirement

 

Sujets relatifs
Remplir un champs au fur et à mesureMacro de Tableau Excel vers Word
passage d'un tableau en argumentMettre en tableau des données entrelacées
Problème d'affichage d'un tableau[JS DOM]Tableau créé en DOM, s'affiche sous FF, pas sous IE
acceler le parcour de mon tableautableau a 2 dimensions!!!!!
[Pascal] Length pour tableau ?tri d'un tableau par ordre alphabétique
Plus de sujets relatifs à : [C]Remplir un tableau d'entiers uniques aléatoirement


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR