2013-06-04 9 views
17

इस कोड में:क्या होता है जब आप यादृच्छिक-संख्या इंजन और यादृच्छिक-संख्या वितरण की प्रतिलिपि बनाते हैं?

std::default_random_engine e; 
std::default_random_engine e2 = e;      //1 
std::default_random_engine e3(e2);      //2 
std::default_random_engine e4(std::move(e3));    //3 

std::uniform_real_distribution<double> d(0,1); 
std::uniform_real_distribution<double> d2 = d;   //4 
std::uniform_real_distribution<double> d3(d2);   //5 
std::uniform_real_distribution<double> d4(std::move(d3)); //6 

आप व्याख्या कर सकते हैं वास्तव में मामलों 6 1 से प्रत्येक में क्या होता है क्या? मुझे कॉपी असाइनमेंट, निर्माण की प्रतिलिपि नहीं है, और कहीं भी प्रलेखित इन वर्गों के लिए निर्माण को स्थानांतरित नहीं किया गया है।

विशेष रूप से: जब हम दूसरे से एक नया इंजन/वितरण बनाने के लिए, यह या जारी रखने के लिए जहां यह दूर छोड़ दिया रीसेट करता है?

उत्तर

12

जब आप किसी इंजन या वितरण की प्रतिलिपि बनाते हैं, तो यह गारंटी दी जाती है कि दोनों इंजन (या वितरण) उस बिंदु से मूल्यों का एक ही अनुक्रम उत्पन्न करेंगे।

इंजनों के लिए, मानक की आवश्यकता है कि ई (एक्स) एक इंजन का उत्पादन करेगा जो x (26.5.1.4, तालिका 117) के बराबर तुलना करता है। इंजन बराबर की तुलना करते हैं यदि इंजन के भविष्य के कॉल के अनंत अनुक्रम एक ही मूल्य (26.5.1.4) उत्पन्न करेंगे।

वितरण के लिए, उन्हें प्रतिलिपि बनाने योग्य (तालिका 21) की आवश्यकताओं को पूरा करने के लिए (26.5.1.6p4) आवश्यक है। इसकी आवश्यकता है कि बनाई गई वस्तु मूल के बराबर होगी। बराबर (26.5.1.6, तालिका 118) की तुलना में वितरण की आवश्यकता यह है कि उनके पास समान पैरा हैं, और उत्पन्न मूल्यों का भविष्य अनुक्रम (समतुल्य इंजन का उपयोग करते हुए) समान है।

संबंधित मुद्दे

 संबंधित मुद्दे