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

Collection et Stream Java Discussion :

[Random] exclusion d'une valeur


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 75
    Par défaut [Random] exclusion d'une valeur
    Salut

    je voudrais savoir comment il est possible d'exclure un chiffre du random,

    je m'explique : j'ai une direction qui est choisi aleatoirement avec un random et je voudrais qu'au prochain passage dans ma boucle il me fasse un random en excluant la valeur actuel

    par exemple la direction a 4 valeur : 0, 1, 2, ou 3 au debut je fait un random :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    direction = rand.nextInt(4);
    la direction tombe sur 0 (par exemple)

    et au prochain passage de ma boucle je voudrais qu'il me refasse le meme random mais sans prendre en compte le 0 est ce possible??

    merci de vos reponses

  2. #2
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    bonsoir,
    et au 3ème passage, qu'est-ce que cela donnerait ?

  3. #3
    Membre éprouvé Avatar de Xavinou
    Inscrit en
    Mai 2005
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 135
    Par défaut
    Dans ta boucle tu peux tirer un nombre entre 0 et 2, puis tu le transformes pour qu'il te donne un nombre entre 0 et 3, en excluant la précédente valeur.
    Dans ta boucle, tu peux avoir quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    n = rand.nextInt(3);
    if (n < direction) direction = n
    else direction = n + 1

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Par défaut
    Tu peux faire ca avec un tableau, simplement, je m'explique...

    Tu mets dans un tableau l'ensemble des valeurs que tu souhaites avoir.
    (Ton tableau fait une taille n)

    Tu fais un tirage aleatoire entre 0 et n-1.

    Tu récupères la valeur a l'indice tiré...

    Pour le coup suivant, il suffit que tu retires la valeur choisie au tour précédent dans ton tableau, qui est de taille n-1, et que tu fasses un tirage aleatoire entre 0 et n-2...

    Si tu dois réinecter la valeur tiré au premier coup après le deuxième, il suffit de la mettre en bout de chaine...

    Pour se faire, plutot qu'un tableau, autant prendre un objet ayant une struture permettant de gérer une taille dynamique... (Voir Vector, ArrayList...)

  5. #5
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Plus rapide : tu additionne le nombre tiré aléatoirement au nombre précédent, modulo 4.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int precedent = rand.nextInt(3);
    int suivant = (precedent + 1 + rand.nextInt(2))%4;
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Par défaut
    Plus rapide : tu additionne le nombre tiré aléatoirement au nombre précédent, modulo 4.
    Pas con de faire un décalage, en prenant comme point de départ le nombre pécédemment tiré...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exclusion d'une liste de valeurs
    Par christof1976 dans le forum Excel
    Réponses: 2
    Dernier message: 19/08/2013, 17h23
  2. random.choice SAUF une valeur ? (débutant) [Résolu]
    Par progcyb dans le forum Général Python
    Réponses: 8
    Dernier message: 18/07/2013, 12h05
  3. [Débutant] Choisir une valeur d'un ensemble de valeurs ( Random)
    Par camps dans le forum MATLAB
    Réponses: 1
    Dernier message: 17/04/2012, 12h38
  4. Comment gerer en edit une valeur random en appuyant sur pushbutton
    Par mihaispr dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 13/03/2009, 18h58
  5. Afficher une valeur du context
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 13
    Dernier message: 28/04/2003, 13h49

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