Exclure certaines valeurs d'un générateur aléatoire

Fermé
santosV - 27 janv. 2019 à 16:22
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 - 28 janv. 2019 à 00:17
Bonjour,

je suis bloqué, je veux exclure certeines valeurs d'un generateur aléatoire.
En gros j'ai écrit un programme générant 10 chiffres aléatoires de 0 à 10, et je voudrais exclure les valeurs 3 et 4 par exemple.
j'essaye d'apprendre Python en autodidacte

3 réponses

luckydu43 Messages postés 3484 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 30 juin 2022 815
27 janv. 2019 à 17:46
Bonjour

Une solution serait (attention, je code en Java) :
List<Integer> nombresAleatoires = new LinkedList<>();
List<Integer> nombresAEliminer = new LinkedList<>();
nombresAEliminer.add(3);
nombresAEliminer.add(4);

Integer nbMax = 50;
while (nbMax > 0) {
     Integer valeurRandom = Math.rand(0,50);
     // Si la liste NE CONTIENT PAS la valeur (c'est le ! au début qui fait que non)
     if (!nombresAEliminer.contains(valeurRandom)) {
          nombresAleatoires.add(valeurRandom);
          nbMax = nbMax - 1;
     }
}
1
malgré le fait que ce soit en java j'ai compris la logique derriére
c'est une facon trés élegante de résoudre ce probléme
merci pour ta réponse
0
_Ritchi_ Messages postés 21210 Date d'inscription samedi 17 mars 2007 Statut Contributeur Dernière intervention 20 avril 2024 6 058
27 janv. 2019 à 18:05
Bonjour,
Suggestion:
Tu crées une liste des valeurs non souhaitées.
Tu génères une valeur aléatoire et tu la cherches dans ta liste des valeurs non souhaitées.
Si tu la trouves, tu recommences ta génération de valeurs aléatoires

Ritchi
1
merci beaucoup
la methode me semble bonne et logique, je m"empresse d'essayer
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 931
28 janv. 2019 à 00:17
Bonsoir, tu peux aussi raisonner à l'inverse.

Tu crées la liste des valeurs autorisée, selon ton exemple
0, 1, 2, 5, 6, 7, 8, 9, 10 -> 9 valeurs et soit
  • générer aléatoirement des index entre 0 et 8, prendre la valeur de la liste à cet index
  • mélanger la liste et prendre les n premiers de la liste (cette méthode interdit les doublons, et autorise le tirage de la collection complète: distribution d'un jeu de carte par exemple)

1