कैप्शन काफी ज्यादा कहता है।क्या किसी को प्रति थ्रेड या प्रति प्रक्रिया क्रमशः बीज को srand() सी फ़ंक्शन कॉल करने की आवश्यकता है?
पीएस। यह सी ++ विंडोज प्रोग्राम के लिए है।
कैप्शन काफी ज्यादा कहता है।क्या किसी को प्रति थ्रेड या प्रति प्रक्रिया क्रमशः बीज को srand() सी फ़ंक्शन कॉल करने की आवश्यकता है?
पीएस। यह सी ++ विंडोज प्रोग्राम के लिए है।
the MSDN documentation on srand()
के अनुसार (आप माइक्रोसॉफ्ट के सी क्रम पुस्तकालय का उपयोग कर रहे कल्पना करते हुए), बीज धागे की स्थानीय है, तो आप प्रत्येक थ्रेड कि rand()
उपयोग कर रहा है के लिए srand()
कॉल करने के लिए की जरूरत है। ध्यान दें कि यह अन्य कार्यान्वयन में मामला नहीं हो सकता है।
MSDN से हवाला देते हुए:
srand समारोह वर्तमान सूत्र में कूट-यादृच्छिक पूर्णांकों की एक श्रृंखला पैदा करने के लिए प्रारंभिक बिंदु निर्धारित करता है।
नहीं, मानक के अनुसार, क्योंकि एक बार जब आप srand()
पर कॉल करते हैं तो यह सभी धागे से rand()
कॉल को प्रभावित करता है।
सी पुस्तकालय समारोह srand()
एकल पिरोया जैसे अन्य सभी कार्य हैं, जिसका मतलब है अगर तुम फोन srand()
एक धागे से, यह संख्या-seqeunce रूप में अच्छी तरह अन्य धागे में rand()
से उत्पन्न प्रभावित करता है।
लेकिन माइक्रोसॉफ्ट गैर मानक srand()
प्रदान करता है जो आपको सभी धागे से कॉल करने की आवश्यकता है।
अच्छा, तकनीकी रूप से यह सही उत्तर भी है, हालांकि आपको कहा जाना चाहिए, "हां" आपके शुरुआती कथन में - जिसका अर्थ है, हाँ, प्रत्येक थ्रेड पर इसे कॉल करने के लिए, दाएं)) – ahmd0
@ ahmd0: मानक के मुताबिक, यह 'नहीं 'होना चाहिए। – Nawaz
माइक्रोसॉफ्ट का उल्लंघन करने वाले मानक केवल पॉज़िक्स थ्रेडिंग मानक और सी ++ 11 मानकों हैं, जिनमें से कोई भी माइक्रोसॉफ्ट का मानना नहीं है। माइक्रोसॉफ्ट का कार्य गैर मानक नहीं है, यह विंडोज थ्रेडिंग मानक के अनुरूप है, जो कई तरीकों से पॉज़िक्स मानक से अलग है। यह सिर्फ उनमें से एक है। (और माइक्रोसॉफ्ट ने इसे सही पाया, पॉज़िक्स/आईएसओ ने इसे गलत पाया। ऊपर मेरी टिप्पणी देखें।) –
यहां तक कि अगर इस सवाल का जवाब किसी प्लेटफ़ॉर्म विशिष्ट नहीं थे मैं तुम्हें srand()
से बचने और बजाय <random>
का उपयोग सुझाव देना चाहेंगे। सी ++ 11 <random>
लाइब्रेरी न केवल बहुप्रचारित कार्यक्रमों में स्पष्ट अर्थशास्त्र प्रदान करती है बल्कि यह यादृच्छिक संख्या पीढ़ी के लिए भी बेहतर सुविधाएं प्रदान करती है। यह विभिन्न गुणवत्ता, गति, और आकार की आवश्यकताओं को पूरा करने के लिए कई अलग-अलग यादृच्छिक संख्या जेनरेटर प्रदान करता है, और कई मानक वितरण इसलिए आप rand
का उपयोग करते समय अक्सर गलतियों को नहीं करेंगे।
कृपया अपना कोड दिखाएं ... –