Salut tout le monde !
J'ai besoin de votre aide pour un problème avec les nombres aléatoires.
J'ai codé un algo simpliste (suffisant pour mon projet) de limite centrale. Dans celui-ci je génère 12 nombres aléatoires que j'additionne ect...
Mon problème est le suivant, lorsque j'exécute mon script (python swig), j'appel ma fonction C++ qui génère toujours la même séquence aléatoire.
En me renseignant, j'ai plus ou moins compris que le problème venait du fait que mon traitement se fait en moins d'une seconde, donc démarre de la même seed à chaque fois...
Je m'embrouille et je sais plus quoi faire, des idées?
PS: Mes include sont bon, etc...
Code Python :
...
res=0
ioMean=0
ioStddev=0
tmpM=0
i = 1
while i < 500:
seed = (i==1)
res = centralLimit.execute(175, 20, seed)
tmpM = ioMean
ioMean += (res - tmpM) / i
ioStddev += (res - tmpM) * (res - ioMean)
i += 1
print ioMean
ioStddev = sqrt(ioStddev/(500-1))
print ioStddev
...
Code C/C++ :
class CentralLimitAlgorithm : public AbstractAlgorithm
{
public:
static int execute (int mean, int stddev);
private:
};
Code C/C++ :
int CentralLimitAlgorithm::execute (int mean, int stddev)
{
srand(time(NULL));
double res = 0;
for (int i=0; i<12; i++)
{
res += ((double) rand() / (RAND_MAX));
}
res -= 6;
res /= 6;
float sigma= res * stddev ;
res += mean + sigma;
return res;
}