C में रैंडम नंबर कैसे जेनरेट करें: रेंज, फ्लोटिंग पॉइंट और व्यावहारिक उदाहरण

1. परिचय

C प्रोग्रामिंग भाषा का व्यापक उपयोग लोलेवल सिस्टम प्रोग्रामिंग और गेम विकास में किया जाता है। इसके कई अनुप्रयोगों में “रैंडम नंबर जेनरेशन” अक्सर उपयोग किया जाता है। उदाहरण के लिए, यह गेम में रैंडम तत्व बनाने, सिमुलेशन चलाने, एन्क्रिप्शन करने और टेस्ट डेटा उत्पन्न करने आदि कई कार्यों में प्रयुक्त होता है।

यह लेख C में निर्दिष्ट रेंज के भीतर रैंडम नंबर कैसे जेनरेट करें, इसे ठोस उदाहरणों के साथ समझाता है। इसका उद्देश्य पाठकों को रैंडम नंबर जेनरेशन की यांत्रिकी समझने और वास्तविक प्रोग्रामों में इसे लागू करने में मदद करना है।

2. C में रैंडम नंबर जेनरेशन की बुनियादें

C में रैंडम नंबर मानक लाइब्रेरी <stdlib.h> का उपयोग करके जेनरेट किए जाते हैं। rand() फ़ंक्शन 0 से RAND_MAX (लगभग 2147483647) तक के पूर्ण रैंडम नंबर उत्पन्न करता है। हालांकि, यदि आप समान सीड वैल्यू का उपयोग करते हैं, तो हर बार समान रैंडम नंबर क्रम उत्पन्न होगा।

स्यूडो-रैंडम नंबर जेनरेट करना और सीड वैल्यू सेट करना

रैंडम नंबर जेनरेशन में “सीड वैल्यू” एक महत्वपूर्ण अवधारणा है। सीड रैंडम नंबर क्रम की शुरुआती बिंदु निर्धारित करती है। इसे सेट नहीं किया गया तो प्रोग्राम हर बार चलने पर वही नंबर उत्पन्न करेगा। इसे रोकने के लिए srand() फ़ंक्शन का उपयोग करके सीड सेट करें। सामान्यतः, वर्तमान समय को सीड के रूप में सेट करने के लिए time() फ़ंक्शन का उपयोग किया जाता है।

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    srand((unsigned int)time(NULL));
    printf("%dn", rand());
    return 0;
}

यह सुनिश्चित करता है कि प्रोग्राम प्रत्येक बार चलने पर अलग‑अलग रैंडम नंबर उत्पन्न करे।

3. निर्दिष्ट रेंज के भीतर रैंडम नंबर जेनरेट करना

यदि आप किसी विशिष्ट रेंज के भीतर रैंडम नंबर चाहते हैं, तो rand() फ़ंक्शन के परिणाम पर गणितीय ऑपरेशन लागू करना होगा। रेंज के भीतर रैंडम नंबर जेनरेट करने का मूल सूत्र है:

rand() % (max - min + 1) + min

यह min और max (समावेशी) के बीच एक पूर्णांक रैंडम नंबर उत्पन्न करता है।

नमूना कोड: रेंज के भीतर रैंडम नंबर जेनरेशन

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    int min = 1;
    int max = 100;
    srand((unsigned int)time(NULL));
    int random_number = rand() % (max - min + 1) + min;
    printf("Random number between %d and %d: %dn", min, max, random_number);
    return 0;
}

यह कोड 1 से 100 के बीच एक रैंडम नंबर उत्पन्न करता है और उसे प्रिंट करता है।

4. रैंडम फ्लोटिंग‑पॉइंट नंबर जेनरेट करना

फ़्लोटिंग‑पॉइंट रैंडम नंबर जेनरेट करने के लिए rand() फ़ंक्शन को RAND_MAX के साथ स्केल किया जाता है। 0.0 से 1.0 के बीच रैंडम नंबर प्राप्त करने के लिए नीचे दिया गया कोड उपयोग करें:

नमूना कोड: रैंडम फ्लोटिंग‑पॉइंट नंबर जेनरेशन

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    srand((unsigned int)time(NULL));
    double random_number = (double)rand() / RAND_MAX;
    printf("Random number between 0.0 and 1.0: %fn", random_number);
    return 0;
}

यह प्रोग्राम 0 से 1 की रेंज में रैंडम नंबर उत्पन्न करता है। स्केलिंग लागू करके आप किसी भी फ़्लोटिंग‑पॉइंट रेंज में रैंडम नंबर जेनरेट कर सकते हैं। उदाहरण के लिए, 0.0 से 5.0 के बीच नंबर पाने के लिए परिणाम को 5 से गुणा करें।

5. रैंडम नंबरों के व्यावहारिक उपयोग

पासा सिमुलेशन

गेम विकास में पासा सिमुलेशन रैंडम नंबर उपयोग का एक सामान्य उदाहरण है। नीचे दिया गया कोड 1 से 6 के बीच रैंडम नंबर उत्पन्न करता है जिससे पासा फेंकने का अनुकरण किया जाता है:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    srand((unsigned int)time(NULL));
    int dice_roll = rand() % 6 + 1;
    printf("Dice roll: %dn", dice_roll);
    return 0;
}

मोन्टे कार्लो विधि का उपयोग करके π का अनुमान

मोन्टे कार्लो विधि रैंडम नंबरों का उपयोग करके उन समस्याओं के समाधान का अनुमान लगाती है जिन्हें विश्लेषणात्मक रूप से हल करना कठिन होता है। नीचे दिया गया कोड रैंडम नंबरों का उपयोग करके π का अनुमान लगाने का प्रदर्शन करता है:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    int n_trials = 1000000;
    int n_inside = 0;
    double x, y, pi;

    srand((unsigned int)time(NULL));

    for (int i = 0; i < n_trials; i++) {
        x = (double)rand() / RAND_MAX;
        y = (double)rand() / RAND_MAX;
        if (x * x + y * y <= 1) {
            n_inside++;
        }
    }

    pi = 4.0 * n_inside / n_trials;
    printf("Approximated π: %fn", pi);

    return 0;
}

यह विधि यादृच्छिक संख्याएँ उत्पन्न करके और यह मूल्यांकन करके π की गणना करती है कि कितनी संख्याएँ इकाई वृत्त के भीतर आती हैं। यह भौतिकी सिमुलेशन और संभाव्य मॉडलिंग में व्यापक रूप से उपयोग की जाती है।

6. निष्कर्ष

इस लेख में, हमने C में निर्दिष्ट सीमा के भीतर यादृच्छिक संख्याएँ उत्पन्न करने के तरीके को कवर किया। हमने rand() और srand() के मूल उपयोग, पूर्णांक और फ्लोटिंग‑पॉइंट दोनों रेंज में संख्याएँ उत्पन्न करना, और पासे सिमुलेशन तथा मोन्टे कार्लो विधि जैसी व्यावहारिक अनुप्रयोगों पर चर्चा की। यादृच्छिक संख्या उत्पन्न करना कई क्षेत्रों में एक आवश्यक तकनीक है, जिसमें गेम विकास और सिमुलेशन शामिल हैं।

इन तकनीकों को अपने भविष्य के प्रोजेक्ट्स में लागू करने का प्रयास करें ताकि कार्यक्षमता और विविधता में सुधार हो सके।