2013-09-25 4 views
5

मैं एक ऐसे विकास मुद्दे को देख रहा हूं जिसके लिए छद्म यादृच्छिक संख्या पीढ़ी के उपयोग की आवश्यकता है ताकि किसी दिए गए बीज के लिए यादृच्छिक संख्याओं के समान सेट को उत्पन्न किया जा सके। मैं वर्तमान में long random(void) और void srandom(unsigned seed) का उपयोग कर रहा हूं (man page), और वर्तमान में ये मैक ऐप, आईओएस ऐप और आईओएस ऐप (64-बिट) में यादृच्छिक संख्याओं का एक ही सेट उत्पन्न कर रहे हैं जो मैं था उम्मीद कर रहा। आईओएस परीक्षण केवल सिम्युलेटर में थे इसलिए मुझे नहीं पता कि इससे परिणाम प्रभावित होंगे या नहीं।यादृच्छिक() कभी बदल जाएगा?

मेरी मुख्य चिंताओं यह है कि यह एल्गोरिदम कुछ बिंदु पर बदल सकता है, जिससे हम पुराने डेटा के साथ प्रभावी ढंग से बेकार विकास कर रहे हैं। भविष्य में डिवाइस पर बदल रहे/अलग होने वाले इन एल्गोरिदम की संभावना क्या है?

+0

आरएनजी पर चर्चा करने वाले किसी भी व्यक्ति ने हमेशा इस क्लासिक डिलबर्ट स्ट्रिप को दिमाग में लाया है ... http://dilbert.com/strips/comic/2001-10-25/ // विषय पर: मुझे लगता है कि @ बाथशेबा स्पॉट पर है :) – Luke

+0

वे शायद नहीं बदलेंगे, क्योंकि उन पर कई निर्भरताएं हैं। लेकिन कोई गारंटी नहीं है। –

उत्तर

6

मैं कहूंगा कि यह अत्यंत संभवतः वे बदल जाएंगे क्योंकि अनुक्रम किसी भी मानक द्वारा गारंटी नहीं है।

अपने खुद के यादृच्छिक संख्या अनुक्रम का उपयोग क्यों नहीं करें? यहां तक ​​कि एक साधारण रैखिक congruential जनरेटर यादृच्छिकता के सबसे सांख्यिकीय गुणों को संतुष्ट करता है। यहाँ इस तरह के एक जनरेटर के लिए सूत्र है:

next_number = (a * current_number + b) % c 

साथ

a = 1103515245 
b = 12345 
c = 4294967296 

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

2

मेरे पास आपके द्वारा पूछे जाने वाले प्रश्न के उत्तर के बारे में थोड़ा सा विचार नहीं है।

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

बाथशेबा ने this generator का प्रस्ताव दिया। आप "छद्म यादृच्छिक जनरेटर एल्गोरिदम" के लिए Google पर जा सकते हैं। wikipedia पर सूचीबद्ध एल्गोरिदम की एक सूची यहां दी गई है।

+0

लिंक के लिए +1 जिसमें ए, बी और सी (मेरे नोटेशन) – Bathsheba

0

वास्तव में, srandom मैक ओएस एक्स 10.7 के बाद बदल गया, this blog post के अनुसार। हालांकि, के कारण srandom को लागू किया गया था: यह एक अनियंत्रित स्थानीय चर का उपयोग करने का प्रयास किया गया, जो सी में अपरिभाषित व्यवहार है। पोस्ट के मुताबिक, मैक ओएस एक्स 10.7 के बाद से उपयोग किया गया नया कंपाइलर अनियमित स्मृति को अनुकूलित करता है पहुंच, सूक्ष्म तरीकों से अपने व्यवहार को बदलना।

+0

के लिए अन्य मान शामिल हैं, यह यादृच्छिक संख्या जेनरेटर फ़ंक्शन 'srandom' नहीं बदला गया है, लेकिन बीजिंग फ़ंक्शन 'srandomdev'। चूंकि ओपी एक निश्चित बीज 'srandom' का उपयोग करता है, फिर भी समान छद्म यादृच्छिक मान उत्पन्न कर सकता है। यह, ज़ाहिर है, इस तथ्य को नहीं बदलेगा कि 'srandom' * * किसी भी समय बदल सकता है। –

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