Coix aléatoire d'une liste

Fermé
jj1k Messages postés 30 Date d'inscription jeudi 8 juin 2017 Statut Membre Dernière intervention 3 septembre 2017 - 21 juil. 2017 à 14:06
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 21 juil. 2017 à 22:30
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

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

Aider est mon nindo
0
jj1k Messages postés 30 Date d'inscription jeudi 8 juin 2017 Statut Membre Dernière intervention 3 septembre 2017
21 juil. 2017 à 20:05
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
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
21 juil. 2017 à 20:29
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
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
21 juil. 2017 à 22:30
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