Exclure certaines valeurs d'un générateur aléatoire
santosV
-
Utilisateur anonyme -
Utilisateur anonyme -
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
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
-
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; } }-
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
-
-
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 -
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)