Utilisation de <random> avec une fonction statique
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:
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:
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:
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.