
Dear list members, I'm using the Boost Random Number Library, and am now trying to store the state of an instance of normal_distribution by means of its << operator. It doesn't however seem to work: three of its data members are definitely not outputting properly on my system. I can reproduce the problem with this test file: ----- #include <boost/random/mersenne_twister.hpp> #include <boost/random/variate_generator.hpp> #include <boost/random/normal_distribution.hpp> #include <iomanip> #include <iostream> #include <limits> using namespace boost; using namespace std; int main() { mt19937 rng; normal_distribution<> gauss; variate_generator<mt19937&, normal_distribution<> > var(rng, gauss); cerr << setprecision(numeric_limits<double>::digits10 * 2); for (size_t i = 0; i != 5; ++i) { cerr << var() << endl; //prints a random number cerr << gauss << endl; //dumps object internal state } //for } //main ----- which, on Ubuntu 8.04 amd64 (gcc 4.2.4, boost 1.34.1) produces this output: 0.21343601372288967255030911474 0 1 0 6.95335189373114898041666608493e-310 6.9533518937319394854500120794e-310 -0.495580282118778303601658308253 0 1 0 6.95335189373114898041666608493e-310 6.9533518937319394854500120794e-310 1.57537639010992913668474102451 0 1 0 6.95335189373114898041666608493e-310 6.9533518937319394854500120794e-310 -1.05920392793252360341682560829 0 1 0 6.95335189373114898041666608493e-310 6.9533518937319394854500120794e-310 1.83926543714107570970384131215 0 1 0 6.95335189373114898041666608493e-310 6.9533518937319394854500120794e-310 ...and I get similar output on an OpenSuse 10.2 x86_64 system (gcc 4.1.2, boost 1.33.1). If I understand the code in boost/random/normal_distribution.hpp correctly, the third member in the stream represents _valid and should alternate between 0 and 1, and the last two values should definitely not stay the same for five iterations. Can you tell me if I'm doing anything wrong? (And, slightly offtopic, what should I set the stream-precision at to ensure exact reloading of the floating point data?) Many thanks for reading and thinking about this, Yung-Chin Oei