C:
यादृच्छिक संख्याओं का निर्माण
कैसे करें:
C में, यादृच्छिक संख्याएं rand()
फंक्शन का उपयोग करके उत्पन्न की जा सकती हैं, जो C स्टैंडर्ड लाइब्रेरी <stdlib.h>
का हिस्सा है। डिफ़ॉल्ट रूप से, rand()
0 से RAND_MAX
(एक स्थिरांक जो <stdlib.h>
में परिभाषित होता है) की सीमा में पसीडो-यादृच्छिक संख्याएं उत्पन्न करता है। सीमा पर अधिक नियंत्रण के लिए, प्रोग्रामर rand()
के आउटपुट को संशोधित कर सकते हैं।
यहाँ 0 और 99 के बीच एक यादृच्छिक संख्या उत्पन्न करने का एक सरल उदाहरण है:
#include <stdio.h>
#include <stdlib.h> // rand() और srand() के लिए
#include <time.h> // समय के लिए
int main() {
// यादृच्छिक संख्या जनरेटर को सीड करें
srand((unsigned) time(NULL));
// 0 और 99 के बीच एक यादृच्छिक संख्या उत्पन्न करें
int randomNumber = rand() % 100;
printf("यादृच्छिक संख्या: %d\n", randomNumber);
return 0;
}
नमूना आउटपुट प्रत्येक बार आप इस कार्यक्रम को चलाते समय भिन्न हो सकता है:
यादृच्छिक संख्या: 42
एक विभिन्न सीमा के भीतर यादृच्छिक संख्याएं उत्पन्न करने के लिए, आप मॉड्यूलस ऑपरेटर (%
) को उसी के अनुसार समायोजित कर सकते हैं। उदाहरण के लिए, rand() % 10
0 से 9 तक की संख्याएं उत्पन्न करता है।
महत्वपूर्ण है कि पसीडो-यादृच्छिक संख्या जनरेटर को सीडिंग (srand()
कॉल) वर्तमान समय (time(NULL)
) के साथ कार्यक्रम निष्पादनों में विभिन्न अनुक्रमों की यादृच्छिक संख्याओं को सुनिश्चित करती है। सीडिंग (srand()
) के बिना, rand()
हर बार जब प्रोग्राम चलाया जाता है तब उसी अनुक्रम की संख्याएं उत्पन्न करेगा।
गहराई में:
rand()
फंक्शन और उसकी सीडिंग समकक्ष srand()
कई दशकों से C स्टैंडर्ड लाइब्रेरी का हिस्सा रहे हैं। वे ऐसे एल्गोरिदम पर आधारित हैं जो केवल यादृच्छिक प्रतीत होने वाले संख्याओं के अनुक्रम उत्पन्न करते हैं—इसलिए शब्द “पसीडो-यादृच्छिक।” rand()
में उपयोग किया जाने वाला अधीनस्थ एल्गोरिदम आमतौर पर एक रेखीय सहसंबद्ध जनक (LCG) होता है।
जबकि rand()
और srand()
कई अनुप्रयोगों के लिए पर्याप्त होते हैं, उनकी यादृच्छिकता की गुणवत्ता और संभावित पूर्वानुमान लगाने योग्यता के संबंध में ज्ञात सीमाएँ होती हैं। उच्च-गुणवत्ता की यादृच्छिकता वाले अनुप्रयोगों के लिए, जैसे कि क्रिप्टोग्राफिक कार्य, विकल्पों को विचार किया जाना चाहिए जैसे कि /dev/random
या /dev/urandom
(यूनिक्स-जैसे सिस्टमों पर), या क्रिप्टोग्राफिक लाइब्रेरियों द्वारा प्रदान किए गए APIs।
C11 के परिचय के साथ, ISO C मानक में एक नया हेडर, <stdatomic.h>
, शामिल किया गया, जिससे समवर्ती ऑपरेशनों के लिए अधिक परिष्कृत नियंत्रण की पेशकश की गई, लेकिन सीधे यादृच्छिकता से संबंधित नहीं। C में वास्तविक यादृच्छिकता के लिए, डेवलपर्स अक्सर मंच-विशिष्ट या बाहरी लाइब्रेरियों की ओर रुख करते हैं जो बेहतर एल्गोरिदम प्रदान करते हैं या हार्डवेयर एंट्रोपी स्रोतों का उपयोग करते हैं।
याद रखें, जबकि rand()
पसीडो-यादृच्छिक संख्याओं को उत्पन्न करने के लिए एक सरल और सुलभ साधन के रूप में काम करता है, इसका उपयोग आधुनिक अनुप्रयोगों में इसके आउटपुट की गुणवत्ता और पूर्वानुमान लगाने योग्यता द्वारा सीमित है। सुर�