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 :

[débutant] problème avec les nombres aléatoires


Sujet :

C++

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 8
    Points : 2
    Points
    2
    Par défaut [débutant] problème avec les nombres aléatoires
    Bonjour, alors voila mon problème : j'essaye de créer des nombres aléatoires avec rand() et j'initialise en début de programme avec srand((int)time(NULL)); et j'ai inclu #include <stdlib.h> mais mon problème c'est que mon nombre ne change que toutes les minutes. Si je le lance mon programme plusieurs fois dans une même minute de mon horloge, le nombre sera le même ; et à la minute d'après il sera incrémenté ce qui rend le nombre plus prévisible qu'autre chose ; Quelqu'un peut m'aider svp ?

  2. #2
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Un suet quelques lignes en dessous du tien :
    http://www.developpez.net/forums/viewtopic.php?t=466703

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Oui je l'ai lu justement mais ça ne m'aide pas, mon nombre aléatoire devrait changer à chaque lancement du programme

  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
    Normalement time() devrait renvoyer autre chose toutes les secondes et non toutes les minutes, mais bon si réellement ça ne suffit pas tu peux toujours employer une fonction de timing plus précise, qui renvoie des millisecondes par exemple.

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    et ça se présente comment concrètement une telle chose stp ?

  6. #6
    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
    Sous Windows par exemple tu as timeGetTime(). Mais je le répète, tu ne devrais pas avoir de problème avec time().

    Sinon curiosité, quel genre d'application a besoin d'être lancé plusieurs fois par minute ?

  7. #7
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Je m'amuse à faire le petit jeu de prédilection du programmeur très débutant dans lequel le programme génère un nombre aléatoire et l'utilisateur doit le deviner. En tout cas merci pour l'info, je vais de nouveau me pencher sur le problème (tout en tachant de ne pas perdre l'équilibre et de tomber dessus).

  8. #8
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    C'est bon j'ai résolu mon problème, ça venait finalement des bornes de rand que j'avais définis de la mauvaise façon. Merci aux intervenants

  9. #9
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Finalement rien n'est résolu, c'est encore pire, je n'y comprends plus rien ! J'ai ce petit jeu dont le source se trouve ci dessous mais son problème c'est que le nombre de coups dont on a trouvé chaque nombre est additionné à chaque tour de boucle et je n'arrive pas à solutioner le problème sans revenir sans changer le fait que mes nombres aléatoires ne changent que toutes les minutes

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <iostream>
     
    using namespace std;
     
    int main(int nNumberofArgs, char* pszArgs[])
    {
    int gain;
    int bet;
    int capital = 20;
    int perf = 1;
    int nbr;
    int nbr2;
    srand(time(0));
    nbr = (rand()%99)+1;
     
    while(capital>1)
    {
     
    cout << "Votre capital est de " << capital << " euros, entrez une mise : ";
    cin >> bet;
    capital=capital-bet;
    cout << "Capital = " << capital << " euros. \n \n";
    cout << "Devinez un nombre entre 1 et 100 : ";
    cin >> nbr2;
     
     
    while(nbr2!=nbr)
    {
    if(nbr2<nbr)
    {
    capital=capital--;
    cout << "Capital = " << capital << " euros. \n \n";
    cout << "C'est plus, essaye encore... ";
    cin >> nbr2;
    }
    else
    {
    capital=capital--;
    cout << "Capital = " << capital << " euros. \n \n";
    cout << "C'est moins, essaye encore... ";
    cin >> nbr2;
    }
    perf = perf+1;
    }
     
    if(perf<5)
    {
    cout << "\nVoila, c'est " << nbr << ", tu as trouv\x82 en " << perf << " coups. \n";
    gain=bet*3;
    cout << "Vous gagnez " << gain << " euros. \n";
    capital=capital+gain;
    cout << "Capital = " << capital << " euros. \n";
    }
    else
    {
    cout << "\nVoila, c'est " << nbr << ", tu as trouv\x82 en " << perf << " coups. \n";
    gain=bet*1;
    cout << "Vous gagnez " << gain << " euros. \n";
    capital=capital+gain;
    cout << "Capital = " << capital << " euros. \n \n \n";
    }
     
    }
    cout << "Perdu, vous n'avez plus d'argent ! \n";
     
     
     
        system("PAUSE");
        return 0; 
    }

    [Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]

  10. #10
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    bon ben finalement même celui-là ne fonctionne plus maintenant, le chiffre à deviner est toujours le même !

  11. #11
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Tu peux essayer avec un rand() pour rien apres srand?
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  12. #12
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Voila j'ai trouvé il suffisait jsute de réinitialisé avec srand après la deuxième boucle else puis de redéfinir la valeur de nbr par nbr=rand()...

  13. #13
    Membre averti Avatar de niglo
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 379
    Points : 383
    Points
    383
    Par défaut

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

Discussions similaires

  1. [débutant] problème avec les arguments de fopen
    Par Anouschka dans le forum C++
    Réponses: 13
    Dernier message: 23/02/2006, 14h56
  2. [Débutant] Problèmes avec les tableaux.
    Par Lwq dans le forum C++
    Réponses: 6
    Dernier message: 01/11/2005, 12h54
  3. Réponses: 5
    Dernier message: 04/09/2005, 12h34
  4. [Débutant] Problème avec les paramètres d'une proc stockée
    Par babulior dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/06/2005, 15h38
  5. [Débutant]Problème avec les timers
    Par mickael777 dans le forum MFC
    Réponses: 1
    Dernier message: 11/04/2005, 11h00

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