2013-02-16 80 views
23

यादृच्छिक संख्या उत्पन्न करने के मामले में एक बीज क्या है?एक यादृच्छिक संख्या उत्पन्न करने के मामले में एक बीज क्या है?

मुझे सैकड़ों से यादृच्छिक संख्याएं उत्पन्न करने की ज़रूरत है, मैंने "बीज" का उपयोग करने के बारे में बहुत कुछ पढ़ा है। एक बीज क्या है? क्या वह बीज है जहां यादृच्छिक संख्याएं शुरू होती हैं? उदाहरण के लिए यदि मैं अपने बीज को 5 होने के लिए सेट करता हूं तो क्या यह 5 से संख्याएं उत्पन्न करेगा जो मेरी सीमा है? तो यह मुझे उदाहरण के लिए 3 कभी नहीं देगा।

मैं सी ++ का उपयोग कर रहा हूं, इसलिए यदि आप कोई उदाहरण प्रदान करते हैं तो यह अच्छा होगा अगर यह सी ++ में था।

धन्यवाद!

उत्तर

30

वास्तविकता में यादृच्छिक संख्या अनुक्रम कहा जाता है जिसे वास्तविकता में एक "छद्म-यादृच्छिक" संख्या अनुक्रम कहा जाता है क्योंकि मानों को एक निर्धारक एल्गोरिदम का उपयोग करके गणना की जाती है और संभावना कोई वास्तविक भूमिका निभाती है।

"बीज" अनुक्रम के लिए एक प्रारंभिक बिंदु है और गारंटी यह है कि यदि आप एक ही बीज से शुरू करते हैं तो आपको संख्याओं का एक ही अनुक्रम मिल जाएगा। उदाहरण के लिए यह बहुत उपयोगी है उदाहरण के लिए डिबगिंग (जब आप किसी प्रोग्राम में एक त्रुटि की तलाश में हैं, तो आपको समस्या को पुन: उत्पन्न करने और इसे पढ़ने में सक्षम होने की आवश्यकता है, एक गैर-निर्धारिती कार्यक्रम डीबग करना बहुत मुश्किल होगा क्योंकि प्रत्येक रन अलग होगा) ।

आप संख्या की बस एक यादृच्छिक अनुक्रम की जरूरत है और साथ तो यह पुन: पेश करने के लिए बस उदाहरण के लिए ... बीज के रूप में वर्तमान समय का उपयोग की जरूरत नहीं है:

srand(time(NULL)); 
+0

ठीक है, हाँ,' srand' उपयोग कर सकते हैं() '। लेकिन टीआर 1 में अमीर नए यादृच्छिक संख्या जनरेटर (ठीक है, इतना नया नहीं) और सी ++ 11 में सभी के पास बीजिंग के लिए स्वयं का यांत्रिकी है, और 'srand' शामिल नहीं है। –

+0

@PeteBecker: मेरा जंगली अनुमान यह है कि ओपी को 'srand/rand' की आवश्यकता के लिए पर्याप्त से अधिक है। – 6502

+0

हां, शायद। फिर भी, बीजिंग सिर्फ 'srand' के बारे में नहीं है। '' –

3

तो, इसे इस तरह से रख करते हैं:

यदि आप और आपके मित्र बीज को उसी संख्या में बराबर करते हैं, तो तब तक आप और आपके मित्र को एक ही यादृच्छिक संख्या मिल जाएगी। तो, अगर हम सब इस सरल प्रोग्राम लिखने:

#include<iostream> 
using namespace std; 
void main() { 
    srand(0); 
    for (int i=0; i<3; i++){ 
     int x = rand()%11;   //range between 0 and 10 
     cout<<x<<endl; 
    } 
} 

हम सब एक ही यादृच्छिक संख्या जो कर रहे हैं मिल जाएगा (5, 8, 8)।

और तुम differenct संख्या हर बार प्राप्त करना चाहते हैं, तो आप `बीज के रैंड srand (समय())