IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Java fonction aléatoire de int sans doublon


Sujet :

Développement Web en Java

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2020
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Java fonction aléatoire de int sans doublon
    Bonjour,

    je dois effectuer un programme dans lequel je dois générer un chiffre aléatoire entre 1 et 9 en gérant le problème des doublons. Je ne dois effectuer que 5 tirages.
    cela fait deux jours que je cherche comment faire.
    Je pensais pouvoir utiliser la fonction Random et une fois que j'ai mon chiffre , dire que je ne veux pas que le suivant lui soit identique. Mais même en cherchant sur tous les sites et forums je n'arrive pas à y voir clair.
    Quelqu'un peut-il m'aider ?

    Voici le bout de code que j'ai crée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
            Random obj = new Random();
            int position = 0;                                                       // on initialise la position à 0
            int positionPrecedente = position - 1;
     
            for (int cptTir = 0; cptTir < 5; cptTir++) {                 // pour notre compteur de 1 à 5 tours, on l'incrémente à chaque tour
                position = obj.nextInt(10);                                  // on tire un chiffre de façon aléatoire à chaque tour
                if (position == positionPrecedente) {
     
                    obj.nextInt(10);
     
                }
     
                System.out.println("Le Goal est en position : " + position);              // on affiche la position du Goal
                int reste = position % 2;                                                                   // on applique le modulo sur ma variable reste pour définir sa parité
                if (reste == 0) {                                                                                 // si le reste == 0 , alors mon chiffre est pair
                    System.out.println("pair");
     
                } else {
                    System.out.println("impair");                                                        // sinon impair
                }

  2. #2
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 679
    Points
    1 679
    Par défaut
    Citation Envoyé par DevMar77 Voir le message
    je dois effectuer un programme dans lequel je dois générer un chiffre aléatoire entre 1 et 9 en gérant le problème des doublons. Je ne dois effectuer que 5 tirages.

    Voici le bout de code que j'ai crée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                position = obj.nextInt(10);                                  // on tire un chiffre de façon aléatoire à chaque tour
                if (position == positionPrecedente) {
     
                    obj.nextInt(10);
     
                }
    Bonjour,

    Le code ci-dessus revient à dire : Tire un nombre au hasard jusqu'à ce que la condition soit remplie.
    En java on peut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    do {
      position = obj.nextInt(10);
    } while (condition);
    Ce qui permet de ne faire l'action qu'une fois ET de vérifier la condition tant qu'elle n'est pas vraie.

    En ce qui concerne la condition, (position == positionPrecedente) limite le test au tirage précédent.
    Si c'est ce qui est souhaité, parfait.
    Sinon, il est possible de stocker les tirages dans un ensemble et de vérifier la présence d'une valeur dans cet ensemble.

    cf : https://jmdoudoux.developpez.com/cou...#collections-4


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Set<Integer> tirages = new HashSet<Integer>();
     
    do {
      position = obj.nextInt(10);
    } while ( tirages.contains( position ) ); // position déjà tirée au hasard
     
    tirages.add( position ); // on mémorise

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2020
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Cincinnatus
    je sais que j'ai utilisé obj. mais j'ai trouvé ça sur internet et je comprends ma fonction mais j'ai du mal à lire ce que représente obj ... je débute lol tu aurais une explication ?

  4. #4
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 679
    Points
    1 679
    Par défaut
    Citation Envoyé par DevMar77 Voir le message
    je sais que j'ai utilisé obj. mais j'ai trouvé ça sur internet et je comprends ma fonction mais j'ai du mal à lire ce que représente obj ... je débute lol tu aurais une explication ?
    Dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Random obj = new Random();
    obj est simplement une instance de la classe Random, classe utilitaire pour les tirages aléatoires.

    Pour plus d'infos :
    https://docs.oracle.com/javase/8/doc...il/Random.html
    https://cyberzoide.developpez.com/tu...i-java-random/

Discussions similaires

  1. [AC-2007] Fonction total (ou somme) sans doublons
    Par dylanbibalou dans le forum Access
    Réponses: 11
    Dernier message: 06/02/2015, 13h05
  2. [AC-2002] Nombre aléatoire dans requète sans Doublons
    Par far34 dans le forum Access
    Réponses: 12
    Dernier message: 25/03/2014, 13h52
  3. Réponses: 2
    Dernier message: 27/05/2007, 22h23
  4. Nombre aléatoire sans doublon
    Par Ardely dans le forum Delphi
    Réponses: 9
    Dernier message: 01/03/2007, 21h54
  5. [MySQL] Sélection aléatoire sans doublon
    Par krapoulos2006 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 20/12/2006, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo