У меня была такая же проблема с кодом, первоначально размещенным и исследованным GNU-реализацией
Первые некоторые наблюдения:
с g ++ - 4.4 и используя код зависает,
с g ++ - 4.5 и использованием -std = c ++ 0x (т.е. не TR1, а реальная вещь) над кодом работает
ИМХО, произошло изменение между TR1 и c ++ 0x в отношении адаптеров между генерацией случайных чисел и потреблением случайных чисел - mt19937 выдает целые числа, потребление Normal_distribution удваивается
c ++ 0x использует адаптацию автоматически, код g ++ TR1 не
, чтобы ваш код работал с g ++ - 4.4 и TR1, выполните следующее
std::tr1::mt19937 prng(seed);
std::tr1::normal_distribution<double> normal;
std::tr1::variate_generator<std::tr1::mt19937, std::tr1::normal_distribution<double> > randn(prng,normal);
double r = randn();