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

Résolu
canarder Messages postés 1714 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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.
A voir également:

4 réponses

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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 1714 Date d'inscription   Statut Membre Dernière intervention   355
 
Il est bien aléatoire, par contre il est jamais au dessus de 50, c'est bizarre.
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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 1714 Date d'inscription   Statut Membre Dernière intervention   355
 
Et comment faire pour que 0 et 100 soient inclus ?
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
En faisant un modulo sur 101.
0
canarder Messages postés 1714 Date d'inscription   Statut Membre Dernière intervention   355
 
merci
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Pour info, c'est plutôt ctime qu'il faut inclure et non time.h.

Cdlt,
0