Je sais que ce genre de question a été posée à quelques reprises, mais beaucoup d'entre elles se résument à RTFM, mais j'espère que je peux poser la bonne question. Je peux obtenir une réponse quasi-définitive pour tous les autres, concernant la mise en œuvre.Utilisation correcte de s/rand ou Boost :: random
Je suis en train de générer une séquence de nombres aléatoires dans l'une des deux manières suivantes:
#include <cstdlib>
#include <ctime>
#include <cmath>
#include "Cluster.h"
#include "LatLng.h"
srand((unsigned)time(0));
double heightRand;
double widthRand;
for (int p = 0; p < this->totalNumCluster; p++) {
Option 1.
heightRand = myRand();
widthRand = myRand();
Option 2.
heightRand = ((rand()%100)/100.0);
widthRand = ((rand()%100)/100.0);
LatLng startingPoint(0, heightRand, widthRand);
Cluster tempCluster(&startingPoint);
clusterStore.insert(clusterStore.begin() + p, tempCluster);
}
Où Myrand() est:
#include <boost/random.hpp>
double myRand()
{
boost::mt19937 rng;
boost::uniform_int<> six(1,100);
boost::variate_generator<boost::mt19937&, boost::uniform_int<> > die(rng, six);
int tempDie = die();
double temp = tempDie/100.0;
return temp;
}
Chaque fois que je lance l'option 1, Je reçois le même numéro à chaque exécution de chaque boucle. Mais différent sur chaque course du programme.
Lorsque j'exécute l'option 2, j'obtiens 82 des bibliothèques boost, donc 0.81999999999999 est retourné. Je pourrais comprendre si c'était 42, mais 82 me laisse me gratter la tête même après avoir lu les documents aléatoires de poussée.
Des idées?
DJS.
L'option 2 exécute rand() qui est une bibliothèque C - où est Boost ici. (et où voyez-vous 82 - retour de myRand? – Mark