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

santosV -  
 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

3 réponses

luckydu43 Messages postés 4259 Date d'inscription   Statut Membre Dernière intervention   1 057
 
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
santosV
 
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 21333 Date d'inscription   Statut Contributeur Dernière intervention   6 104
 
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
santosV
 
merci beaucoup
la methode me semble bonne et logique, je m"empresse d'essayer
0
Utilisateur anonyme
 
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