Random

infogoss Messages postés 20 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 13 juin 2010 - 8 mars 2010 à 09:28
Ickik Messages postés 193 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 10 mars 2010 - 10 mars 2010 à 09:51
bonjour a tous ;
j'ai un petit programme qui concerne une matrice qu'on doit remplir ces éléments par un random mais le problème c que dans la même ligne ne doit pas figurer un élément plus qu'une fois .
j'ai essayé d'implémenter une fonction qui fait le test mais j'ai pas arrivé .
voila mes instruction .

indiv=new int[Nindiv+3][Ntache+2]; //initialiser le tableau des individus
Random r = new Random(); // initialiser la varriable aleatoire
//Remplire la table d'individu
i=0;
int k;
while (i<Nindiv){
indiv[i][0]=i;//remplire la case n=0 par le numero d'individu
j=1;
while(j<=Ntache){
indiv[i][j]=(r.nextInt(Ntache));// remplire le reste d'un individu par une squence aleatoire des tachs
j=j+1;
}
i+=1;
}


merci

4 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
8 mars 2010 à 10:55
Salut,

Et bien il te suffit de tester, à chaque ajout dans une case de ton tableau, si la valeur ajoutée ne l'ai pas déjà dans la même ligne du tableau.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
Ickik Messages postés 193 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 10 mars 2010 2
9 mars 2010 à 16:13
Salut,

ou alors utiliser BitSet pour savoir si la valeur aleatoire est déja sortie ou non à chaque ligne

while (i<Nindiv){

BitSet bitSet = new BitSet(Valeur max de l'aléatoire);

while(j<=Ntache){
int n = r.nextInt(Ntache);
if (!bitSet.get(n)) {
bitSet.set(n);
indiv[i][j]=(r.nextInt(Ntache));
j++;
}
}
0
infogoss Messages postés 20 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 13 juin 2010
9 mars 2010 à 21:49
salut ,
merci il n'a pas marché ????
0
Ickik Messages postés 193 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 10 mars 2010 2
10 mars 2010 à 09:51
int Nindiv = 3;
int Ntache = 4;
int[][] indiv= new int[Nindiv+3][Ntache]; //Ntache = nombre de taches affectees a un individu au max
Random r = new Random(); // initialiser la varriable aleatoire
//Remplire la table d'individu
int i=0;
int k;
while (i<Nindiv+3){
BitSet bitSet = new BitSet(Ntache + 3);//nb de taches total
indiv[i][0]=i;//remplire la case n=0 par le numero d'individu
int j=1;
while(j<Ntache){
int n = r.nextInt(Ntache+3);
if (!bitSet.get(n)) {
bitSet.set(n);
indiv[i][j]=(n);
j++;
}
}
i+=1;
}
0