कई अच्छे जवाब, लेकिन मुझे एक और जोड़ने और इस बिंदु पर जोर देने की अनुमति दें कि एक नियतात्मक कंप्यूटर में, कुछ भी यादृच्छिक नहीं है। यह एक छद्म- RNG द्वारा उत्पादित दोनों संख्याओं के लिए सही है और स्टैक पर C / C ++ स्थानीय चर के लिए आरक्षित स्मृति के क्षेत्रों में पाए जाने वाले "यादृच्छिक" संख्याएं हैं।
लेकिन ... एक महत्वपूर्ण अंतर है।
एक अच्छे छद्म आयामी जनरेटर द्वारा उत्पन्न संख्याओं में ऐसे गुण होते हैं जो उन्हें सांख्यिकीय रूप से वास्तव में यादृच्छिक ड्रॉ के समान बनाते हैं। उदाहरण के लिए, वितरण एक समान है। चक्र की लंबाई लंबी है: चक्र को दोहराने से पहले आप लाखों यादृच्छिक संख्या प्राप्त कर सकते हैं। अनुक्रम स्वतःसंबंधित नहीं है: उदाहरण के लिए, यदि आप हर 2, 3, या 27 वें नंबर को लेते हैं, या यदि आप उत्पन्न संख्याओं में विशिष्ट अंकों को देखते हैं, तो आपको अजीब पैटर्न उभरने लगते हैं।
इसके विपरीत, स्टैक पर पीछे छोड़ दिए गए "यादृच्छिक" संख्याओं में इनमें से कोई भी गुण नहीं है। उनके मूल्य और उनकी स्पष्ट यादृच्छिकता पूरी तरह से इस बात पर निर्भर करती है कि कार्यक्रम का निर्माण कैसे किया जाता है, इसे कैसे संकलित किया जाता है, और यह कंपाइलर द्वारा कैसे अनुकूलित किया जाता है। उदाहरण के रूप में, यहाँ एक स्व-निहित कार्यक्रम के रूप में आपके विचार की भिन्नता है:
#include <stdio.h>
notrandom()
{
int r, g, b;
printf("R=%d, G=%d, B=%d", r&255, g&255, b&255);
}
int main(int argc, char *argv[])
{
int i;
for (i = 0; i < 10; i++)
{
notrandom();
printf("\n");
}
return 0;
}
जब मैं एक लिनक्स मशीन पर जीसीसी के साथ इस कोड को संकलित करता हूं और इसे चलाता हूं, तो यह अप्रिय रूप से नियतात्मक होता है:
R=0, G=19, B=0
R=130, G=16, B=255
R=130, G=16, B=255
R=130, G=16, B=255
R=130, G=16, B=255
R=130, G=16, B=255
R=130, G=16, B=255
R=130, G=16, B=255
R=130, G=16, B=255
R=130, G=16, B=255
यदि आप एक डिस्सैम्बलर के साथ संकलित कोड को देखते हैं, तो आप विस्तार से बता सकते हैं कि क्या चल रहा था। नोट्रिज़्म () के पहले कॉल में स्टैक के एक क्षेत्र का उपयोग किया गया था जो पहले इस कार्यक्रम द्वारा उपयोग नहीं किया गया था; कौन जानता है कि वहाँ क्या था। लेकिन उसके बाद नॉट्रैंडम () पर कॉल करने के लिए, प्रिंटफ () के लिए एक कॉल है (जो कि जीसीसी कंपाइलर वास्तव में पुचर (), लेकिन कभी भी मन नहीं करता है) को कॉल के लिए अनुकूलित करता है और स्टैक को ओवरराइट करता है। तो अगले और बाद के समय, जब नोट्रोनियम () कहा जाता है, स्टैक में पुचर () के निष्पादन से बासी डेटा होगा, और चूंकि पुचर () को हमेशा एक ही तर्कों के साथ कहा जाता है, यह बासी डेटा हमेशा समान रहेगा, भी।
इसलिए इस व्यवहार के बारे में कुछ भी यादृच्छिक नहीं है, और न ही इस तरह से प्राप्त संख्याओं में अच्छी तरह से लिखित छद्म आयामी संख्या जनरेटर के वांछनीय गुणों में से कोई भी है। वास्तव में, अधिकांश वास्तविक जीवन के परिदृश्यों में, उनके मूल्य दोहराए और अत्यधिक सहसंबद्ध होंगे।
वास्तव में, दूसरों के रूप में, मैं किसी ऐसे व्यक्ति पर गोलीबारी करने पर भी विचार करूंगा, जिसने इस विचार को "उच्च प्रदर्शन आरएनजी" के रूप में पारित करने की कोशिश की।