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

C++ Discussion :

[newbie] comment programmer random en c++ ???


Sujet :

C++

  1. #1
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut [résolu] [newbie] comment programmer random en c++ ???
    j'ai cherche dans la FaQ du site mais j'ai pas trouve alors si quelqu'un pouvait me venir en aide.

    ce que je cherche a faire, c'est la selection au hazard d'un chiffre dans une map definit comme ceci:

    std::map<std::string, AttMot>;
    il me faudrait donc une fonction qui selectionne au hazard un chiffre qui aura ete entré dans le std::string en first de la map.

    merci d'avance.

  2. #2
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    fonction random_shuffle dans la STL.
    http://support.microsoft.com/default.aspx?scid=kb;en-us;156994
    8)

  3. #3
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    ok merci beaucoup,
    disons que la je vois pas trop comment l'utiliser mais j'y regarderai a tete reposé plus tard.
    sinon pendant que j'y suis, j'aimerai un conseil. j'essaye de programmer le jeu du pendu et j'ai programme actuellement la page de presentation, une partie qui permettra de rajouter des mots dans le dictionnaire et la je vais m'attaquer a la partie jeu.

    mon probleme est comment, apres avoir choisit un des mots dans le dictionnaire au hazard ( d'ou le random ), faire pour que a partir du mot choisi, on est la premiere lettre et le reste des lettres en _
    je pensais essayer de programmer pour que le mot choisit soit decompose lettre par lettre dans une autre map et apres faire un test pour voir si la lettre est dedans mais il existe surement un moyen plus simple pour le faire

    alors encore merci d'avance

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Hmm random_shuffle sert à melanger une sequence, pas à resortir un élément aléatoirement. Pourquoi pas plutot générer un indice aléatoire (avec rand()) puis aller piocher l'élément correspondant dans ta map ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int Indice = rand() % Map.size();
    map<...>::iterator It = Map.begin();
    std::advance(It, Indice);
     
    std::string Mot = It->first;

  5. #5
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    et voila, j'ai encore lu trop vite.
    dsl.

  6. #6
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Citation Envoyé par Loulou24
    Hmm random_shuffle sert à melanger une sequence, pas à resortir un élément aléatoirement. Pourquoi pas plutot générer un indice aléatoire (avec rand()) puis aller piocher l'élément correspondant dans ta map ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int Indice = rand() % Map.size();
    map<...>::iterator It = Map.begin();
    std::advance(It, Indice);
     
    std::string Mot = It->first;
    excuse moi de remettre ce message au gout du jour mais hier j'ai essaye d 'inclure ce que tu m'as propose ci dessus dans mon programme mais je n'y suis pas arrive, alors si quelqu'un pouvait me mettre les commentaires de chacune des lignes, je comprendrai surement mieux qu'est ce que je fais ( eh oui, je suis vraiment un gros newbie desole)

    merci a vous!

    zorm

    PS: y a t'il des includes specials a mettre pour pouvoir compiler ce code???

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    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
    #include <iterator> // pour std::advance
    #include <map> // pour std::map
    #include <string> // pour std::string
    #include <cstdlib> // pour rand
     
    // Génération d'un nombre aléatoire entre 0 et Map.size() - 1
    int Indice = rand() % Map.size();
     
    // Récupération d'un itérateur sur le début de la map
    map<std::string, AttMot>::iterator It = Map.begin();
     
    // On avance l'itérateur Indice fois : on pointe maintenant sur l'élément numéro Indice de la map
    std::advance(It, Indice);
     
    // On récupère ce qui est pointé par l'itérateur
    std::string Mot = It->first;
    j'ai essaye d 'inclure ce que tu m'as propose ci dessus dans mon programme mais je n'y suis pas arrive
    La prochaine fois pense à préciser ton erreur ça peut être utile aussi .

  8. #8
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    ok merci beaucoup.

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

Discussions similaires

  1. [Palm] Comment programmer pour Palm Os ?
    Par Pascal Lob dans le forum Mobiles
    Réponses: 7
    Dernier message: 24/08/2007, 09h59
  2. comment programmer un gestionnaire d'interruptions
    Par youknowriad dans le forum C++
    Réponses: 1
    Dernier message: 04/01/2006, 15h34
  3. Comment programmer un robot ?
    Par reggae dans le forum Robotique
    Réponses: 4
    Dernier message: 18/12/2005, 11h41
  4. Comment programmer sous dos ?
    Par AsmCode dans le forum C++
    Réponses: 8
    Dernier message: 17/11/2005, 02h07
  5. comment programmer une progressbar
    Par Choucas dans le forum Paradox
    Réponses: 3
    Dernier message: 13/11/2002, 11h07

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