http://ideone.com/p8B7lF (the code is also provided in attachment). I expected that both functions, f and g, would return the same value every time. But, as we can see, initializing Mersenne using its constructor doesn't yield consistent results. I tested compiler from Visual Studio 2012, and it doesn't have this bug. Other random number engines probably don't have this bug (I tested std::minstd_rand).
Created attachment 28619 [details] reproduction
It's a stupid uninitialized variable. Will fix momentarily.
Author: paolo Date: Mon Nov 5 19:25:20 2012 New Revision: 193181 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=193181 Log: 2012-11-05 Paolo Carlini <paolo.carlini@oracle.com> PR libstdc++/55215 * include/bits/random.tcc (mersenne_twister_engine<>::seed(_Sseq&)): Assign state_size to _M_p. * testsuite/26_numerics/random/mersenne_twister_engine/cons/55215.cc: New. * testsuite/26_numerics/random/independent_bits_engine/cons/55215.cc: Likewise. * testsuite/26_numerics/random/shuffle_order_engine/cons/55215.cc: Likewise. * testsuite/26_numerics/random/subtract_with_carry_engine/cons/ 55215.cc: Likewise. * testsuite/26_numerics/random/discard_block_engine/cons/55215.cc: Likewise. * testsuite/26_numerics/random/linear_congruential_engine/cons/ 55215.cc: Likewise. Added: trunk/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/55215.cc trunk/libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/55215.cc trunk/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/55215.cc trunk/libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/55215.cc trunk/libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/55215.cc trunk/libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/55215.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/random.tcc
Author: paolo Date: Mon Nov 5 20:11:32 2012 New Revision: 193183 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=193183 Log: 2012-11-05 Paolo Carlini <paolo.carlini@oracle.com> PR libstdc++/55215 * include/bits/random.tcc (mersenne_twister_engine<>::seed(_Sseq&)): Assign state_size to _M_p. * testsuite/26_numerics/random/mersenne_twister_engine/cons/55215.cc: New. * testsuite/26_numerics/random/independent_bits_engine/cons/55215.cc: Likewise. * testsuite/26_numerics/random/shuffle_order_engine/cons/55215.cc: Likewise. * testsuite/26_numerics/random/subtract_with_carry_engine/cons/ 55215.cc: Likewise. * testsuite/26_numerics/random/discard_block_engine/cons/55215.cc: Likewise. * testsuite/26_numerics/random/linear_congruential_engine/cons/ 55215.cc: Likewise. Added: branches/gcc-4_7-branch/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/55215.cc branches/gcc-4_7-branch/libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/55215.cc branches/gcc-4_7-branch/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/55215.cc branches/gcc-4_7-branch/libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/55215.cc branches/gcc-4_7-branch/libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/55215.cc branches/gcc-4_7-branch/libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/55215.cc Modified: branches/gcc-4_7-branch/libstdc++-v3/ChangeLog branches/gcc-4_7-branch/libstdc++-v3/include/bits/random.tcc
Fixed mainline and 4.7.3.