१. परिचय
C प्रोग्रामिङ भाषा कम‑स्तरको प्रणाली प्रोग्रामिङ र खेल विकासमा व्यापक रूपमा प्रयोग हुन्छ। यसको धेरै प्रयोगहरू मध्ये, “र्यान्डम नम्बर उत्पादन” बारम्बार प्रयोग गरिन्छ। उदाहरणका लागि, यो खेलहरूमा सिर्जना गर्न, सिमुलेशन चलाउन, इन्क्रिप्शन गर्न, र परीक्षण डेटा उत्पादन गर्न आदि विभिन्न कार्यहरूमा प्रयोग हुन्छ।
यो लेखले C मा निर्दिष्ट दायरा भित्र र्यान्डम नम्बर कसरी उत्पन्न गर्ने भन्ने कुरा स्पष्ट उदाहरणहरू मार्फत व्याख्या गर्दछ। यसले पाठकहरूलाई र्यान्डम नम्बर उत्पादनको मेकानिज्म बुझ्न र वास्तविक कार्यक्रमहरूमा लागू गर्न सहयोग पुर्याउने उद्देश्य राख्दछ।
२. C मा र्यान्डम नम्बर उत्पादनको आधारभूत कुरा
C मा, र्यान्डम नम्बरहरू मानक पुस्तकालय <stdlib.h> प्रयोग गरेर उत्पन्न गरिन्छ। rand() फलनले ० देखि `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;
}
यसले प्रत्येक पटक कार्यक्रम चलाउँदा विभिन्न र्यान्डम नम्बरहरू उत्पन्न हुने सुनिश्चित गर्दछ।
३. निर्दिष्ट दायरा भित्र र्यान्डम नम्बर उत्पादन
यदि तपाईंलाई विशेष दायरा भित्रको र्यान्डम नम्बर चाहिन्छ भने, 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;
}
यो कोडले १ देखि १०० सम्मको र्यान्डम नम्बर उत्पन्न गरी प्रिन्ट गर्छ।
४. र्यान्डम फ्लोटिङ‑प्वाइन्ट उत्पादन
फ्लोटिङ‑प्वाइन्ट र्यान्डम नम्बर उत्पन्न गर्न, स्केलका लागि RAND_MAX सँग rand() फलन प्रयोग गर्नुहोस्। 00 देखि 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 ले गुणा गर्नुहोस्।

५. र्यान्डम नम्बरका व्यावहारिक प्रयोगहरू
पासा सिमुलेशन
खेल विकासमा, पासा सिमुलेशन र्यान्डम नम्बर प्रयोगको सामान्य उदाहरण हो। तलको कोडले १ देखि ६ सम्मको र्यान्डम नम्बर उत्पन्न गरी पासा फ्याँक्ने प्रक्रिया अनुकरण गर्छ:
#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() को मूल प्रयोग, पूर्णांक र फ्लोटिङ‑प्वाइन्ट दायरामा संख्याहरू उत्पन्न गर्ने, र पासा सिमुलेशन तथा मोन्टे कार्लो विधि जस्ता व्यावहारिक अनुप्रयोगहरू अन्वेषण गरेका छौं। यादृच्छिक संख्याको उत्पादन धेरै क्षेत्रहरूमा, जस्तै खेल विकास र सिमुलेशनहरू, एक आवश्यक प्रविधि हो।
यी प्रविधिहरूलाई आफ्नो भविष्यका परियोजनाहरूमा लागू गरेर कार्यक्षमता र विविधता बढाउन प्रयास गर्नुहोस्।




