を対話:C++ 11個の乱数とstd ::バインドは、私はGCC 4.6.3を使用していますし、次のコードで乱数を生成しようとしていた予期しない方法で
#include <random>
#include <functional>
int main()
{
std::mt19937 rng_engine;
printf("With bind\n");
for(int i = 0; i < 5; ++i) {
std::uniform_real_distribution<double> dist(0.0, 1.0);
auto rng = std::bind(dist, rng_engine);
printf("%g\n", rng());
}
printf("Without bind\n");
for(int i = 0; i < 5; ++i) {
std::uniform_real_distribution<double> dist(0.0, 1.0);
printf("%g\n", dist(rng_engine));
}
return 0;
}
私は両方の方法で生成することが期待5つの乱数のシーケンス。代わりに、これは実際に私が得るものです:
With bind
0.135477
0.135477
0.135477
0.135477
0.135477
Without bind
0.135477
0.835009
0.968868
0.221034
0.308167
これはGCCバグですか?それとも、std :: bindと関係がある微妙な問題ですか?もしそうなら、あなたは結果を知ることができますか?
ありがとうございました。
公正ていない、私はのために +1を投稿する前にお母さんから電話がありました速度。 – nurettin
くそー、私はただのスマイリーで答えることはできません:) –
トピックから少し離れていますが、バインドを使用し、各std :: threadへの参照によってジェネレータを渡したい場合はどうしますか? – pyCthon