random.hpp
When using the variate_generator with bcc32 0x593 the results are not usable, e.g. using mt19937 and uniform_real<double> the variate always returns 0. mt19937 in conjunction with uniform_int<> always returns 1.
Code:
#include <iostream>
using namespace std;
#include <boost/random.hpp>
#include <boost/generator_iterator.hpp>
using namespace boost;
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
typedef mt19937 generator;
typedef uniform_real<double> distribution;
typedef variate_generator<generator&, distribution> variate;
generator rng(static_cast<unsigned>(time(0)));
distribution dist(0.,1.);
variate vargen(rng, dist);
boost::generator_iterator<variate> randomizer(&vargen);
for (int i = 0; i < 10; i++) {
cout << *randomizer++ << endl;;
}
char a;
cin >> a;
return 0;
}
Workaround is to enable the BOOST_WORKAROUND for 0x593 in variate_generator.hpp and not only for 0x564.
Patch is attached.
Niclas
Patch for random/variate_generator.hpp