Psyc0s
Messages postés24Date d'inscriptionmercredi 1 janvier 2003StatutMembreDernière intervention 3 mai 2006
-
3 mai 2006 à 03:56
gyzmo222
Messages postés66Date d'inscriptionlundi 27 juin 2005StatutMembreDernière intervention 2 juin 2006
-
3 mai 2006 à 08:48
Bonjour,
J'ai en tableau integer de 24 entrés. Je veux mettre un nombre au hazard dans chaque entré mais de façon à avoir aucune valeur qui se répète.
Mon code ressemble à ça:
Random random = new Random();
int i;
for (i = 0; i <= 24; i++)
{
iTable[i] = random.Next(iNumrows);
for (int y = 0; y <= i; y++)
{
if (iTable[i] == iTable[y])
iTable[i] = random.Next(iNumrows);
}
}
Le problème est que cette boucle vérifie seulement pour la valeur en cour et que la nouvelle valeur peut être identique à une autre déja présente dans le tableau.
taoetc
Messages postés346Date d'inscriptionlundi 8 septembre 2003StatutMembreDernière intervention 3 septembre 20073 3 mai 2006 à 08:42
Random random = new Random();
bool tableauVerif = false;
bool valeurDejaPresente = false;
int i;
for (i = 0; i <= 24; i++)
{
tableauVerif= false;
valeurDejaPresente = false;
while (tableauVerif == false)
{
for (int y = 0; y <= i; y++)
{
if (iTable[i] == iTable[y])
{//si je trouve la valeur alors je sors de la boucle
valeurDejaPresente = true;
break;
}
}
if(valeurDejaPresente==true)
{//si la valeur est déjà presente alors j'en prend une autre
iTable[i] = random.Next(iNumrows);
valeurDejaPresente = false;
}
else // j'ai vérifié toutes les valeurs
tableauVerif= true;
}
}
gyzmo222
Messages postés66Date d'inscriptionlundi 27 juin 2005StatutMembreDernière intervention 2 juin 20061 3 mai 2006 à 08:47
J'ai pas testé mais ca a le mérite de m'avoir un peu réveillé, j'espère que ca fonctionnera :p
Random random = new Random();
int i; //index du tableau à remplir
int trouv=0; //sert à indiquer que le nombre est trouvé
int k=0; //nombre random for (i 0; i < 24; i++) //pas de car le 0 compte et ca ferait 25entrées
{
trouv=0; //remettre trouv à 0 avant la boucle pour chaque index du tableau
while (trouv == 0) //tant qu'il n'a pas trouvé le meme nombre il boucle
{
k = random.Next(iNumrows); //mise d'un nombre dans k
for (int y = 0; y < i; y++) //parcours du tableau déja rempli (donc pas d'égal car la case i n'est pas encore remplie)
{
if (iTable[y] == k) // si le nombre du tableau vaut le nombre random
{trouv=1;} //il l'a trouvé
}
if (trouv == 0) //si il n'a rien trouvé
{ iTable[i] = k; trouv=1;} //on met ce nombre unique dans le tableau et on met trouv a 1 pour sortir de la boucle
}
}