Bonjour la communauté,
Je crée une classe Utilitaire dans laquelle je compte regrouper diverses fonctions statiques .
La première d'entre elle doit retourner un entier "aléatoire" équiprobable compris entre [0, nbFace[
Utilitaire.h
Utilitaire.cpp
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 #ifndef UTILITAIRE_H #define UTILITAIRE_H #include<ctime> #include<random> class Utilitaire { public: // Constructeur Utilitaire(); // Fonction statique static int jetDe(int nbFace, bool dejaVu=true); }; #endif // UTILITAIRE_H
le main pour tester la fonction statique jetDe
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 "../Header_perso/Utilitaire.h" // Constructeurs Utilitaire::Utilitaire() { } // Lance un dé à nbFace int Utilitaire::jetDe(int nbFace, bool dejaVu) { if(nbFace<1) nbFace=1; std::default_random_engine lancer; std::uniform_int_distribution <int> leDe(0,nbFace-1); if(!dejaVu) { int timer = time(NULL); for(int i(0); i<timer%100; i++) leDe(lancer); } int tirage=leDe(lancer); return tirage; }
Ça compile (code::blocks), avec le débugger l'appel à jetDe se passe bien mais tirage vaut systématiquement 0 et pas un entier "aléatoire" entre 0 et 9.
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 #include <iostream> #include "../Header_perso/Utilitaire.h" using namespace std; int main() { //initialisation aléatoire du dé int tirage=Utilitaire::jetDe(5,false); int i(10); while(i!=0) { tirage=Utilitaire::jetDe(10); cout << "tirage = " << tirage << endl; i--; } }
Ça m'échappe... Une idée ?
Rick.
Partager