random - स्टेटलेस रैंडम नंबर जनरेटर क्या मौजूद हैं?




prng stateless (7)

आम तौर पर एक नए राज्य को सीडिंग एक गंभीर पीआरएनजी के लिए काफी समय लगता है, और हर बार नए लोगों को वास्तव में ज्यादा मदद नहीं मिलेगी। एकमात्र मामला मैं सोच सकता हूँ कि आपको एक से अधिक पीआरएनजी को अलग-अलग सिस्टमों के लिए कहां मिलना चाहिए, कैसीनो गेम में कहें तो आपके पास एक कार्ड बनाने के लिए एक जनरेटर और कंप्यूटर नियंत्रण पात्रों द्वारा की गई टिप्पणियां उत्पन्न करने के लिए अलग से एक है, इस तरह से वास्तव में समर्पित उपयोगकर्ता चरित्र व्यवहार के आधार पर परिणाम अनुमान नहीं लगा सकते

सीडिंग के लिए एक अच्छा उपाय इसका उपयोग करना है (रैंडमॉ।) , वे वायुमंडलीय शोर से उत्पन्न होने वाली यादृच्छिक संख्या को मुफ्त में प्रदान करते हैं। समय का उपयोग करने से सीडिंग के लिए यह बेहतर स्रोत हो सकता है

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

क्या एक एकल यादृच्छिक संख्या जनरेटर (आरएनजी) बनाम एक जनरेटर प्रति नंबर उत्पन्न करने और इसे रद्द करने के द्वारा कई संख्याओं को पैदा करने में कोई अंतर है? दोनों कार्यान्वयन क्या संख्या समान रूप से यादृच्छिक हैं उत्पन्न करते हैं? क्या इस के लिए सामान्य आरएनजी और सुरक्षित आरएनजी के बीच कोई अंतर है?

मेरे पास एक वेब अनुप्रयोग है जो ग्राहकों की ओर से यादृच्छिक संख्या की एक सूची उत्पन्न करना माना जाता है। यही है, संख्या प्रत्येक ग्राहक के दृष्टिकोण से यादृच्छिक होना चाहिए। क्या इसका मतलब है कि मुझे क्लाइंट सत्र के लिए एक अलग यादृच्छिक आरएनए बनाए रखने की आवश्यकता है? या मैं सभी सत्रों में एक ही आरएनजी को साझा कर सकता हूं? या क्या मैं प्रति-अनुरोध के आधार पर एक आरएनजी बना सकता हूं?

अद्यतन : यह प्रश्न एक यादृच्छिक अनुक्रम के एक सबसेट भी यादृच्छिक से संबंधित है?


आम तौर पर एक ही पीआरएनजी बनाने और उससे कई मूल्यों को खींचना बेहतर होता है कई उदाहरण बनाने का मतलब है कि आपको यह सुनिश्चित करने की ज़रूरत है कि उदाहरण के लिए बीज अद्वितीय हैं, जिसमें आवृत्ति-विशिष्ट जानकारी शामिल करने की आवश्यकता होगी।

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


जैसा कि लोगों ने पहले ही कहा है, एक बार पीआरएनजी बीज के लिए बेहतर है, और इसे पुन: उपयोग करें। एक सुरक्षित पीआरएनजी केवल एक है जो क्रिप्टोग्राफिक अनुप्रयोगों के लिए उपयुक्त है। प्रत्येक बार फिर से सीडिंग के लिए यथोचित रूप से यादृच्छिक परिणाम होंगे, जहां यह वास्तव में यादृच्छिक "वास्तविक दुनिया" स्रोत से आता है- यानी विशेष हार्डवेयर फिर भी, यह संभव है कि स्रोत पक्षपाती है और यह अभी भी उसी पीआरएनजी का उपयोग करने के लिए सैद्धांतिक रूप से बेहतर होगा।


ठीक है, जब तक वे अलग-अलग हो जाते हैं हर बार जब वे पैदा होते हैं, तो नहीं, मुझे नहीं लगता कि इसमें कोई फर्क नहीं पड़ेगा; हालांकि, यदि यह समय की तरह कुछ पर निर्भर करता है, तो वे पक्षपातपूर्ण बीज के कारण शायद गैर-वर्दी हो जाएंगे।


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

एक एकल आरएनजी बनाने और उससे कई संख्याओं को आकर्षित करने के लिए यह बेहतर होगा।


यह उल्लेखनीय है कि हास्केल एक ऐसा भाषा है जो पूरी तरह से अस्थिरता राज्य को खत्म करने का प्रयास करता है इस लक्ष्य को आईओ (जैसे कि परिवर्तनशीलता के कुछ रूपों की आवश्यकता होती है) जैसी कठिन आवश्यकताओं के साथ सुलझाने के लिए, मोनैड्स को एक गणना से दूसरे को अगले स्थिति में इस्तेमाल करना चाहिए। इस तरह, हास्केल अपने छद्म यादृच्छिक संख्या जनरेटर को लागू करता है। सख्ती से बोलना, यादृच्छिक संख्या पैदा करना स्वाभाविक रूप से राज्यपूर्ण संचालन है, लेकिन हास्केल इस तथ्य को छिपाने में सक्षम है (" >>= ) ऑपरेशन में राज्य" उत्परिवर्तन "को स्थानांतरित करके।

यह संभवतः थोड़ा सा लगता है, और यह वास्तव में आपके प्रश्न का उत्तर नहीं देता है, लेकिन मुझे लगता है कि यह अभी भी लागू है। सैद्धांतिक दृष्टिकोण से, राज्य को शामिल किए बिना आरएनजी के साथ काम करना असंभव है। बावजूद, ऐसी तकनीकें हैं जिनका उपयोग इस बातचीत को कम करने के लिए किया जा सकता है और ऐसा प्रतीत होता है जैसे पूरे ऑपरेशन एक स्टेटलेस प्रकृति का है


एक सुरक्षित पीआरएनजी का उपयोग आपके आवेदन पर निर्भर करता है। यादृच्छिक संख्या क्या हैं? अगर वे कुछ वास्तविक मूल्य (उदा। क्रिप्टोग्राफ़िक से संबंधित) के कुछ हैं, तो आप कुछ भी कम उपयोग नहीं करना चाहेंगे

सुरक्षित पीआरएनजी बहुत धीमी है, और पुस्तकालयों को मनमाना परिशुद्धता, और प्राइमलिटि परीक्षण, आदि आदि के संचालन की आवश्यकता हो सकती है ...






stateless