खोजने का प्रयास कर रहा हूं मैं सी में काम करता हूं और मैं एक यादृच्छिक जनरेटर बनाने के लिए (सख्त) कोशिश कर रहा हूं जो न केवल जनरेटर चलाते समय एक अलग संख्या उत्पन्न करता है बल्कि हर बार एक अलग अनुक्रम भी बनाता है। कार्यक्रम चलाएं। मैंने लगभग हर चीज का परीक्षण किया जो मैंने ऑनलाइन पाया। मेरे परिणामस्वरूप एक अच्छा यादृच्छिक जनरेटर बनाने के 2 अच्छे तरीके हैं। पहला व्यक्ति हर बार एक अलग बीज का उपयोग करना है। लेकिन इसका मतलब है कि मुझे हर बार एक अलग-यादृच्छिक बीज का उपयोग करना पड़ता है, एक मामला जिसे मैंने पहले हल नहीं किया था। यहाँ मैं अब कोशिश कर रहा हूं लेकिन यह नहीं है सही मायने में यादृच्छिक रूप में मैं चाहता हूँ:एक पूर्ण-यादृच्छिक संख्या जनरेटर
int myrand(int random_seed){
random_seed = random_seed * 1103515245 +12345;
return (unsigned int)(random_seed/65536) % 32768;
}
हर बार जब मैं फ़ंक्शन को कॉल मैं द्वारा 1.
बीज वृद्धि दूसरा तरीका time.Time परिवर्तन का उपयोग करना है और इस randomness.I भी कई तरह से करने की कोशिश की है इसे लागू करने के लिए। मेरी नवीनतम कोशिश यहां है: Compiler error-Possible IDE error"undefined reference to gettimeofday error" लेकिन मैं gettimeofday फ़ंक्शन का उपयोग नहीं कर सका क्योंकि मैं विंडोज़ में काम करता हूं। इस सवाल में मुझे कोई जवाब नहीं मिला।
क्या कोई मुझे विंडोज़ में काम कर रहे सी में यादृच्छिक जनरेटर (शायद समय का उपयोग कर) को कैसे कार्यान्वित कर सकता है? या मुझे यूनिक्स का उपयोग करना चाहिए?
कुछ के साथ कुछ गलत है 'srand()'? आप बीज कर सकते हैं यह इस तरह का समय होगा: 'srand (समय (एनयूएलएल));' –
मैंने एसआरएंड (समय (एनयूएलएल) भी कोशिश की) लेकिन मुझे समय बदलने के लिए देरी करना पड़ा। कारण यह है कि मैं एक बार में यादृच्छिक संख्याओं की एक बड़ी राशि उत्पन्न करना चाहता हूं और मैं प्रोग्राम को उत्पन्न करने के लिए 2 मिनट का इंतजार नहीं करना चाहता हूं। मैंने मिलीसेकंड का उपयोग करने की भी कोशिश की लेकिन बिना किसी सफलता के। मेबे मिलीसेकंड जवाब है लेकिन मैं नहीं कर सकता इसे सही कार्यान्वित करें, फिर समस्या यह थी कि मैं खिड़कियों का उपयोग कर रहा हूं। – Dchris
@Dchris: प्रोग्राम की शुरुआत में * एक बार * समय के साथ अपने छद्म-यादृच्छिक संख्या जनरेटर (पीआरएनजी) को बीज दें। फिर आपको यह सुनिश्चित करना होगा कि प्रति दिन एक से अधिक बार अपने प्रोग्राम को न चलाएं (और मिलीसेकंड को उसमें मदद मिलेगी), लेकिन जब भी आप अपने पीआरएनजी से कोई संख्या पढ़ते हैं तो आपको एक सेकंड का इंतजार नहीं करना पड़ता है। –