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 :

Problème fonction random


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 9
    Points
    9
    Par défaut Problème fonction random
    Bonjour. Dans un de mes programmes je souhaite remplir un vecteur par des entiers choisis au hasard entre 1 et 6. Mais je ne comprends vraiment pas pourquoi mon code ci dessous me remplit a chaque fois le vecteur par le même entier dans toutes les cases du vecteur. j aimerais avoir des entiers différents dans chaque case.

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    #include <iostream> 
    #include<vector>
    #include <time.h>       /* time */
    #include <stdlib.h>     /* srand, rand */
     
    using namespace std;
     
    int main ()
    {
        vector<unsigned int> guessDigitsArray;
     
        for (int i = 0; i < 5; ++i){
     
            /* initialize random seed: */
            srand (time(NULL));
     
            guessDigitsArray.push_back(rand() % 6 + 1);
     
        }        
     
        cout<<" les chiffres du tableau: ";
     
        for (int i = 0; i < guessDigitsArray.size(); ++i){
     
            cout<<guessDigitsArray[i];
     
        }        
     
     
      return 0;
    }

  2. #2
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Bonjour, srand(time(NULL)); ne doit apparaître qu'une seule fois.

    [edit] En c++11 ce sera plus du style :

    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
    22
    23
    #include <iostream>
    #include <random>
    //------------------------------------------------------------------------------
    int main ()
    {
        std::vector<unsigned int> guessDigitsArray;
        std::default_random_engine generator;
        std::uniform_int_distribution<int> distribution(1,6);
        int rand_num;
     
        for (int i = 0; i < 5; ++i)
        {
            rand_num = distribution(generator);
            guessDigitsArray.push_back(rand_num);
        }
     
        std::cout << "Les chiffres du tableau: ";
     
        for(auto to_print : guessDigitsArray)
            std::cout << to_print;
     
      return 0;
    }
    Les infos ici.

  3. #3
    Membre confirmé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Points : 616
    Points
    616
    Par défaut
    Salut, il faut initialiser rand() une seule fois:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      /* initialize random seed: */
      srand (time(NULL));
     
      for (int i = 0; i < 5; ++i)
      {
        guessDigitsArray.push_back(rand() % 6 + 1);
      }

Discussions similaires

  1. Problème de fonction random
    Par overlolo dans le forum Langage
    Réponses: 6
    Dernier message: 08/01/2011, 17h30
  2. Problème fonction random avec linux
    Par fabetvince dans le forum C
    Réponses: 12
    Dernier message: 25/05/2006, 23h45
  3. [LG]Fonction random
    Par platoon5 dans le forum Langage
    Réponses: 16
    Dernier message: 22/02/2005, 20h47
  4. Réponses: 2
    Dernier message: 20/08/2004, 17h10
  5. Fonction Random en Assembleur
    Par chidi dans le forum Assembleur
    Réponses: 5
    Dernier message: 21/05/2004, 10h16

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