2009-09-04 17 views
5

के लिए उद्देश्य सी में रैंडम नंबर जेनरेट करना मैं यादृच्छिक समूह और संख्याओं के क्रम उत्पन्न करने के लिए arc4random() फ़ंक्शन का उपयोग कर रहा था, लेकिन मुझे बताया गया कि यह अधिक था और मुझे यादृच्छिक() फ़ंक्शन का उपयोग करना चाहिए बजाय। हालांकि, यादृच्छिक() फ़ंक्शन मुझे हर बार समान समूह और संख्याओं का अनुक्रम देता है।आईफोन एसडीके

मैं srand (समय (0)) को कॉल करता हूं जब एक बार जब मेरा ऐप यादृच्छिक() फ़ंक्शन को बीज करने के लिए शुरू होता है। क्या आपको कभी यादृच्छिक() फ़ंक्शन पर शोध करने की आवश्यकता है?

क्या मुझे कुछ याद आ रही है?

धन्यवाद।

उत्तर

2

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

4

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

दूसरा, srand() बीज rand() फ़ंक्शन, random() नहीं, तो यह आपकी समस्या हो सकती है। और नहीं, आपको किसी भी समय अपने प्रोग्राम के निष्पादन के दौरान जेनरेटर पर शोध नहीं करना चाहिए - स्टार्टअप के दौरान एक बार पर्याप्त है।

+0

फिर आप यादृच्छिक() फ़ंक्शन कैसे बीज करते हैं? –

+0

फ़ंक्शन 'यादृच्छिक() 'आज़माएं। – Tim

+1

arc4random() अधिक नहीं है, और आपको यादृच्छिक() से काफी बेहतर परिणाम देगा। –