Coix aléatoire d'une liste

jj1k Messages postés 32 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
Bonjour

j'ai 3 listes que je veux à chaque fois choisir une aléatoirement parmi les 3.

listT1 = (ArrayList)Arrays.asList(tablev1);
listT2 = (ArrayList)Arrays.asList(tablev2);
listT3 = (ArrayList)Arrays.asList(tablev3);

Comment je pux faire le coix aléatoire ?

Merci

4 réponses

  1. Utilisateur anonyme
     
    Genere un nombre aleatoire entre 1 et 3 et selectionne la liste correspondante avec un switch case

    Aider est mon nindo
    0
  2. jj1k Messages postés 32 Statut Membre
     
    c'est pas ça exactement mon but
    je veux faire un tirage au sort de deux liste parmi ces 3 listes mais je veux quelque chose génerale parce que le nombre de liste peut augmenter d'un cas à un autre.
    0
  3. Utilisateur anonyme
     
    Bonsoir,

    tu mets tes listes dans une listes de listes ou un tableau de listes.

    Un premier random te donne la liste, et un second l'élément, à répéter 2 fois.
    0
  4. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    Voici un exemple générique :

    private static final Random RANDOM = new Random();
    
    public static int randomInt(int minInclusive, int maxExclusive) {
        return RANDOM.nextInt(maxExclusive - minInclusive) + minInclusive;
    }
    
    public static List<Integer> randomIndex(int minInclusive, int maxExclusive, int sizeResult) {
        Set<Integer> result = new LinkedHashSet<>();
        while (result.size() != sizeResult)
            result.add(randomInt(minInclusive, maxExclusive));
        return new ArrayList<>(result);
    }
    
    public static <E> List<E> randomList(List<E> coll, int sizeResult) {
        List<E> result = new ArrayList<>(sizeResult);
        for (Integer n : randomIndex(0, coll.size(), sizeResult))
            result.add(coll.get(n));
        return result;
    }

    Exemple :

    public static void main(String[] args) throws Exception {
        List<String> list = Arrays.asList("listT1", "listT2", "listT3");
        for (int n = 0; n <= list.size(); n++)
            System.out.println(n + "\t" + randomList(list, n));
    }

    Ce qui pourrait donner, selon les valeurs aléatoires choisies :
    0	[]
    1 [listT3]
    2 [listT2, listT1]
    3 [listT1, listT3, listT2]
    0