Tirage aléatoire parmi une liste

NothingToulouse Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
NothingToulouse Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir
Je cherche à créer un script qui me permette de répartir aléatoirement des données parmi celles figurant dans des groupes distincts :
Groupe 1 : A,B,C
Groupe 2 : D,E,F,G,H
Groupe 3 : I,J
Groupe 4 : K,L,M
Groupe 5 : N,O,P

Je souhaiterais un résultat qui m'affiche de façon aléatoire
1 parmi le Groupe 1
2 parmi le Groupe 2
1 parmi le Groupe 3
1 parmi le Groupe 4
1 parmi le Groupe 5
et que les résultats affichés ne produisent pas de doublon.

Le résultat pourrait donc être B-F-H-J-K-N

Merci d'avance
A voir également:

3 réponses

Utilisateur anonyme
 
Bonsoir,

Tu les veux dans cet ordre ou par exemple les deux du groupe 2 pourraient être le premier et le dernier?
Je ne fais pas de Java, mais je peux te donner des algorithmes.
0
NothingToulouse Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
L'ordre n'a pas d'importance capitale.
Merci.
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

"les résultats affichés ne produisent pas de doublon"
Est-ce qu'il y a des doublons dans les groupes ?

Groupe 1 : A,B,C 
Groupe 2 : C,D,E
C-C
c'est autorisé ou interdit ?

Quelle est ta structure de données pour stocker les listes des groupes et la liste de résultat ? (les types d'entrées et de sortie de ta méthode)
La confiance n'exclut pas le contrôle
0
NothingToulouse Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Un même élément ne peut pas appartenir à plusieurs groupes en même temps.
Pour les données de chaque groupe, il y en a une vingtaine au maximum. La liste peut être modifiée "à la main" dans le script.
Pour la sortie, sur une page html tierce avec le résultat B-F-H-J-K-N
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Tu parles de script, de html... est ce que tu ne confondrais pas Java et Javascript ?
0
NothingToulouse Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   > KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention  
 
Ah, c'est bien possible.
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
À défaut de connaître le nom de ton langage, il ressemble à quoi ton code ?
0
NothingToulouse Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   > KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention  
 
Pour l'instant, à pas grand' chose. J'ai des pistes glanées ça et là mais ça ne correspond pas à ce que je souhaiterais.
0
Utilisateur anonyme
 
Bonsoir KX.

@NothingToulouse, voici 2 options, qui dépendent du "contenant" comme KX te l'a demandé.
  • Option1 des tableaux
    • Tu écrits une méthode Melanger qui prend un tableau en paramètre.Dans cette méthode tu vas tirer n fois (à toi de déterminer) deux index aléatoires, et tu échanges les valeurs des 2 "cases" du tableau.A la fin tu retournes le tableau mélangé.
    • Dans une autre méthode, tu appelles Melanger pour chacun de tes tableaux, ensuite tu prends le premier enregistrement du premier tableau, les 2 premiers du second etc...que tu mets dans un tableau Resultats. Tu peux si cela te semble nécessaire mélanger aussi Resultat l'ordre ne sera pas établi.
  • Option2 des List
    • Même idée, mais Melanger est différente, tu fais une boucle qui va de 0 à nombre d'éléments de départs -1. Tu tires aléatoirement un index qui va 0 à nombre d'éléments actuels, tu ajoutes l'item dans l'index à un autre List qui sera celle retournée, et tu supprimes l'item de la List passée en paramètres.


0
Utilisateur anonyme
 
Une autre option, tu mets tes collections (tableau ou list) dans une liste de collections le nombre de fois nécessaire.
Tu tires un premier index qui va déterminer la collection et ensuite un second index qui va déterminer l'item.
Tu enlèves la collection de la liste de collection et tu recommences tant qu'il en reste.
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Remarque : on pourra aussi utiliser la méthode shuffle pour mélanger une liste.
https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#shuffle-java.util.List-
Après il y a juste à prendre les N premiers éléments de la liste ainsi mélangée.
0
Utilisateur anonyme > KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention  
 
Ha c'est trop simple Java! Je vais p'tet m'y mettre finalement
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Java c'est un iceberg, quand je vois tout ce que je sais et tout ce qu'il me reste encore à apprendre c'est à en boire la tasse ^^
0