[C++] le nombre se génère à la compilation

Résolu/Fermé
canarder Messages postés 1706 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 13 mai 2018 - 15 juin 2012 à 17:56
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 16 juin 2012 à 01:05
Bonjour,

Voici ma méthode pour générer un nombre (code raccourci) :
#include <iostream>
#include <string>
#include <cstdlib>

int main(int argc, char** argv) {
int appNb = rand()%100; // ici
return 0;
}


Sauf mon nombre a été généré au moment de la compilation (il est fixé à 33 à chaque fois que je lance le programme).

Comment puis-je générer un nombre int entre 0 et 100 à chaque démarrage de mon application ?

Merci pour votre aide.

4 réponses

[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
15 juin 2012 à 18:00
Salut,

Ajoute

#include <time.h>

et

fait précéder ton appel à rand() par :

srand(time(NULL));

Pour initialiser le générateur de nombres aléatoires.


Dal
0
canarder Messages postés 1706 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 13 mai 2018 354
15 juin 2012 à 18:08
Il est bien aléatoire, par contre il est jamais au dessus de 50, c'est bizarre.
0
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
Modifié par [Dal] le 15/06/2012 à 18:43
rand() % 100 va produire des nombres entre 0 et 99.

Pour des méthodes alternatives d'initialisation, vois cette discussion, qui donne de nombreuses autres méthodes :

https://stackoverflow.com/questions/322938/recommended-way-to-initialize-srand


Dal
0
canarder Messages postés 1706 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 13 mai 2018 354
15 juin 2012 à 18:42
Et comment faire pour que 0 et 100 soient inclus ?
0
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
15 juin 2012 à 18:45
En faisant un modulo sur 101.
0
canarder Messages postés 1706 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 13 mai 2018 354
15 juin 2012 à 18:47
merci
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
16 juin 2012 à 01:05
Pour info, c'est plutôt ctime qu'il faut inclure et non time.h.

Cdlt,
0