Bonjour,

je désire simuler un dés (avec un nombre de face variable) avec la fonction boost. L'idée c'est de rentrer un intervalle compris entre 1 et <le nombre de face du dés> à la fonction et qu'elle me retourne un nombre aléatoire dans cette interval, à chaque appel.

En gros ceci :

Citation Envoyé par M.Brucher
II-A. Les distributions entières uniformes
Ces distributions retournent un entier - par défaut de type int - dans un intervale connu. uniform_smallint<> prend en outre comme hypothèse que l'intervale dans lequel le nombre sera tiré est petit devant l'intervale dans lequel le générateur aléatoire tire une valeur. En revanche, uniform_int<> n'utilise pas cette hypothèse et tire donc correctement un entier. La petite différence n'est pas critique lorsque l'hypothèse est vérifiée - c'est la différence entre utiliser rand() % 20 et rand() / 20.

Les constructeurs prennent en argument la valeur minimale et la valeur maximale de l'intervale. A noter que uniform_int<> peut être appelée par operator() pour générer un nombre dans l'intervalle [0; n].

Les en-têtes correspondants sont boost/random/uniform_smallint.hpp et boost/random/uniform_int.hpp.
Cependant dans son article ( http://matthieu-brucher.developpez.c.../boost/random/ ), M.Brucher ne donne pas d'exemple de comment obtenir ce genre de résultat.

La seule indication qu'on ai c'est :
Les distributions les plus courantes sont proposées par Boost.Random. Pour générer un nombre aléatoire selon une certaine distribution, il faut avoir au préalable un générateur de nombres aléatoires uniforme, et l'appel se fera sous cette forme :


distribution(generateur);
Les generateurs sont listé dans le toturial, mais j'avou ne pas comprendre grand chose quand à leur utilisation.

Malgrés la doc en anglais, les tuto disponible, je n'arrive pas a saisir comment cette biblio fonctionne.

Si quelqu'un pourrait éclairer ma lenterne :p

Merci.