मैं जीसीसी 4.6.3 का उपयोग कर रहा में बातचीत और निम्न कोड के साथ यादृच्छिक संख्या उत्पन्न करने के लिए कोशिश कर रहा था:सी ++ 11 यादृच्छिक संख्या और std :: बाँध अप्रत्याशित तरीके
#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
यह एक जीसीसी बग है: इसके बजाय, इस मैं वास्तव में क्या मिलता है? या क्या यह std :: बाइंड के साथ कुछ सूक्ष्म मुद्दा है? यदि हां, तो क्या आप परिणाम का कोई अर्थ बना सकते हैं?
धन्यवाद।
निष्पक्ष नहीं, मैं +1 पोस्ट करने के लिए इससे पहले कि माँ से एक फोन किया था गति। – nurettin
अरे, मैं सिर्फ एक स्माइली के साथ जवाब नहीं दे सकता :) –
थोड़ा सा विषय बंद करें, लेकिन यदि आप बाध्य का उपयोग करना चाहते हैं और प्रत्येक std :: thread के संदर्भ में जनरेटर पास करना चाहते हैं तो क्या होगा? – pyCthon