2009-10-30 20 views
0

Comment puis-je randomiser l'ordre des paires? par exemple. J'ai 3 éléments stockés dans la liste par ex. A, B, C -> qui fait des paires de A-B, A-C, B-C.Afficher les paires dans l'ordre aléatoire

Comment puis-je afficher la paire dans un ordre aléatoire? par exemple. A-B, A-C, B-C ou B-C, A-B, A-C ou A-C, A-B, B-C

ArrayList<String> s = new ArrayList<String>(); 
    s.add("A"); 
    s.add("B"); 
    s.add("C"); 

ListGenerator lg = new ListGenerator(s); 

AUTRE CLASSE

public class ListGenerator { 

    private ArrayList<String> pairsX= new ArrayList<String>(); 

    public ListGenerator(ArrayList<String> list) { 
    int size = list.size(); 
    int count_pairs = 0; 

    // create a list of all possible combinations 
    for(int i = 0 ; i < size ; i++) 
    { 
     String s1 = ""+i; 
     for(int j = (i+1) ; j < size ; j++) 
     { 
      count_pairs++; 
      String s2 = ""+j; 
      pairsX.add(s1+","+s2); 
     } 
    } 

    System.out.println("numPairs "+count_pairs); 
    for(String s : pairsX) { 
     System.out.println(s); 
    } 
    } 
+0

Vous devriez vraiment le titre de la question quelque chose de plus proche de votre objectif principal. Ce n'est pas une question de génération de paires, mais d'affichage aléatoire de tableaux. Cela m'a pris un peu de temps après avoir lu le brillant one-liner de SingleShot pour réaliser qu'il avait répondu à la question que vous aviez posée. –

+0

Je suis désolé, j'ai oublié de changer le titre de ma question. Ouais seul coup est brillant :-) – Jessy

Répondre

6
Collections.shuffle(pairsX); 
+0

J'ai regardé pour voir si toutes vos réponses étaient des petits doublures, comme je l'avais espéré de votre nom. Tant pis. Bien fait. –

+0

Merci, SingleShot. J'ai oublié, j'ai utilisé collections.suffle avant mais c'est pour numéro unique. Merci :-) – Jessy

+1

Ha ha. Mon nom est de mes jours de tir à la première personne en ligne :-) – SingleShot

0

Je viens de vous donner le code pseudo. Supposons que vous avez trois éléments dans la liste.

  1. i = Générer un nombre aléatoire entre 0 et list.size() -1
  2. j = générer un autre nombre aléatoire similaire.
  3. ensuite imprimer list.get (i) + « - » + list.get (j)

Vous pouvez faire cela dans une boucle et ajouter des conditions pour vérifier si la paire ainsi généré est un double .

Je suppose que vous savez comment générer un nombre aléatoire entre certains chiffres ..

Vous pouvez faire quelque chose comme (Math.random() * 1000)% 3