Réglage de graines de boost::aléatoire

Je voudrais réinitialiser séquences aléatoires à l'aide de différents numéros de semences. Lors de l'exécution de ce code de test:

boost::mt19937 gener(1);
boost::normal_distribution<> normal(0,1);
boost::variate_generator<boost::mt19937&,boost::normal_distribution<> > rng(gener, normal);
cout << rng() << endl;
cout << rng() << endl;
cout << rng() << endl;
gener.seed(2);
cout << rng() << endl;
cout << rng() << endl;
gener.seed(1);
cout << rng() << endl;
gener.seed(2);
cout << rng() << endl;
gener.seed(3);
cout << rng() << endl;

J'obtiens le résultat suivant:

# seed(1) via constructor
-2.971829031
1.706951063
-0.430498971
# seed(2)
-2.282022417
-0.5887503675
# seed(1)
0.2504171986
# seed(2)
-0.5887503675
# seed(3)
0.2504171986

Évidemment, je suis en train de faire quelque chose de très mal. Comment puis-je résoudre ce problème?

OriginalL'auteur anton skvorts | 2011-01-24