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
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
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
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;
}
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
 
#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 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.
Ça m'échappe... Une idée ?

Rick.