Il me semble que le moyen le plus court et le plus simple avec <random> du C++11 pour obtenir un nombre al�atoire dans un intervalle donn� est le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #include <random>
#include <time.h>
std::default_random_engine rd_engine(time(NULL));
int rand_(int min, int max)
{
std::uniform_int_distribution<> rd_dist(min, max);
return rd_dist(rd_engine);
}
int main()
{
int r = rand_(1, 6); // tirage équivalent à celui d'un dé 6
} |
Donc un peu lourdingue... :aie:
Ce qui est dommage avec la lib <random> du C++11 c'est qu'elle est clairement tr�s puissante (on peut sans trop de difficult� sortir des distributions normales, binomiales etc), tr�s customisable, mais il manque une fonction comme rand_ que j'ai d�finit plus haut et qui en une ligne de code couvrirait la vaste majorit� des usages...
Du coup, je n'utilise quasi jamais <random> de C++11, mais le classique :
Code:
1 2 3 4 5
| srand(time(NULL)); // initialisation de rand
for(i=0; i<5; i++)
{
z = rand()%t;
} |
B�tement un srand + rand/modulo est plus court � �crire et suffit largement pour quasiment tout :\