According to: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1452.html
[quote] A uniform_real random distribution produces floating-point random numbers x in the range min <= x <= max, with equal probability. min and max are the parameters of the distribution. [/unqoute] Following code (with either -std=c++0x or -std=gnu++0x): #include <tr1/random> #include <iostream> int main() { std::tr1::mt19937 e; std::tr1::uniform_real<double> dist(0.0, 1.0); std::cout << dist(e) << std::endl; return 0; } Produces: 3.49921e+09. It should produce a value between [0.0, 1.0). Not some wild int. -- Summary: A uniform_real random distribution produces invalid floating-point random numbers Product: gcc Version: 4.3.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: dchichkov at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44653