Un petit coup de main SVP [Résolu]

Signaler
Messages postés
5
Date d'inscription
dimanche 7 février 2010
Statut
Membre
Dernière intervention
19 février 2010
-
Messages postés
5
Date d'inscription
dimanche 7 février 2010
Statut
Membre
Dernière intervention
19 février 2010
-
Bonjour, merci de me corriger si possible :
je veux essayer avec ce code d'afficher toutes les combinaison possibles des trois nombres {1,2,3} aléatoirement.

package toutes;
import java.util.*;

public class toutes {

public static void main (String args[]){

int n=3;

ArrayList l = new ArrayList();
for (int i = 1; i < n+1; i++)
l.add(i);

ArrayList p = new ArrayList();
ArrayList x = new ArrayList();

boolean c;

do{
Collections.shuffle(l);
c=false;
for(int i=0;i<p.size()-n;i+=n){
x.clear();
for(int j=i;j<i+3;j++)
x.add(p.get(j));
if(x.contains(l))
c=true;
}

if(!c){
for(int k=0;k<3;k++)
p.add(l.get(k));
System.out.println(l);
}

}while(p.size()!=18);

}

}

4 réponses

Messages postés
5
Date d'inscription
dimanche 7 février 2010
Statut
Membre
Dernière intervention
10 février 2010

A je viens de voir le mot "aléatoirement prends alors

ceci

       ArrayList<String> al = new ArrayList();
 for(int i=1;i<n;i++)
for(int j=1;j<n;j++)
  if(j!=i){
    for(int k=1;k<n;k++)
      if(k!=i && k!=j)
        al.add( i + "," + j + "," + k); 
                  }   
Collections.shuffle(al);
for(String current : al) 
  			System.out.println(current);
Messages postés
5
Date d'inscription
dimanche 7 février 2010
Statut
Membre
Dernière intervention
10 février 2010

come on! tu veux y aller de façon aléatoire avec shuffle en espérant qui te brasse les 3! combinaisons par magie. En tant que statisticien, je ne crois pas trop. Tu vas être mieux avec un algo prend n = N! + 1

              for(int i=1;i<n;i++)
for(int j=1;j<n;j++)
  if(j!=i){
    for(int k=1;k<n;k++)
      if(k!=i && k!=j)
        System.out.println( i + "" + "" + j+ "" + k ) ;
                  }
             

ça sent le travail d'école, tu as 100%!
Messages postés
5
Date d'inscription
dimanche 7 février 2010
Statut
Membre
Dernière intervention
19 février 2010

je suis très reconnaissant merci.
j'ai pris n=4 et ça me donne :
123
132
213
231
312
321
Messages postés
5
Date d'inscription
dimanche 7 février 2010
Statut
Membre
Dernière intervention
19 février 2010

merci ça marche, c'est juste pour améliorer le code si vous voulez :
Pour afficher toutes les combinaisons possibles des neuf entiers de 1 à 9.
Merci pour votre aide.

package toutes;
import java.util.*;

public class touteslescombinaisons {

    public static void main(String args[]){

        int n=9;
        int fact=1;

for(int i=n;i>0;i--)
fact = fact*i;


        ArrayList liste = new ArrayList();


        int  [][] resultat = new int [fact][n];


        for(int x1=1;x1<=n;x1++)
            for(int x2=1;x2<=n;x2++)
                if(x1!=x2)
                    for(int x3=1;x3<=n;x3++)
                        if(x1!=x3&&x2!=x3)
                            for(int x4=1;x4<=n;x4++)
                                if(x1!=x4&&x2!=x4&&x3!=x4)
                                    for(int x5=1;x5<=n;x5++)
                                        if(x1!=x5&&x2!=x5&&x3!=x5&&x4!=x5)
                                            for(int x6=1;x6<=n;x6++)
                                                if(x1!=x6&&x2!=x6&&x3!=x6&&x4!=x6&&x5!=x6)
                                                    for(int x7=1;x7<=n;x7++)
                                                        if(x1!=x7&&x2!=x7&&x3!=x7&&x4!=x7&&x5!=x7&&x6!=x7)
                                                            for(int x8=1;x8<=n;x8++)
                                                                if(x1!=x8&&x2!=x8&&x3!=x8&&x4!=x8&&x5!=x8&&x6!=x8&&x7!=x8)
                                                                    for(int x9=1;x9<=n;x9++)
                                                                        if(x1!=x9&&x2!=x9&&x3!=x9&&x4!=x9&&x5!=x9&&x6!=x9&&x7!=x9&&x8!=x9){
                                                                            liste.add(x1);
                                                                            liste.add(x2);
                                                                            liste.add(x3);
                                                                            liste.add(x4);
                                                                            liste.add(x5);
                                                                            liste.add(x6);
                                                                            liste.add(x7);
                                                                            liste.add(x8);
                                                                            liste.add(x9);
                                                                        }
        Collections.shuffle(liste);
        for( int i=0;i<fact;i++){
            for(int j=0;j<n;j++){
                resultat[i][j]=liste.get(i*n+j);
                System.out.print(resultat[i][j]+" ");
            }
            System.out.println("");
        }

    }

}