PHP:
यादृच्छिक संख्याएँ उत्पन्न करना
कैसे:
PHP कई समारोहों की पेशकश करता है यादृच्छिक संख्या उत्पन्न करने के लिए, लेकिन सबसे अधिक सामान्य इस्तेमाल किए गए rand()
, mt_rand()
, और क्रिप्टोग्राफिक उद्देश्यों के लिए, random_int()
हैं।
0 से getrandmax() (जो कि rand()
द्वारा लौटाई गई सबसे बड़ी संभावित मूल्य) के बीच एक साधारण यादृच्छिक संख्या उत्पन्न करने के लिए, आप इसे इस्तेमाल कर सकते हैं:
echo rand();
1 से 100 के बीच एक अधिक विशिष्ट सीमा के लिए:
echo rand(1, 100);
हालांकि, गति और यादृच्छिकता के लिए mt_rand()
एक बेहतर विकल्प है:
echo mt_rand(1, 100);
दोनों के लिए आउटपुट 1 से 100 के बीच कुछ भी हो सकता है, यादृच्छिकता पर निर्भर करता है, जैसे कि 42
।
क्रिप्टोग्राफिक या सुरक्षा संबंधित संदर्भों में, जहाँ अप्रत्याशितता अत्यंत महत्वपूर्ण है, random_int()
पसंदीदा विकल्प है क्योंकि यह क्रिप्टोग्राफिक रूप से सुरक्षित छद्म-यादृच्छिक पूर्णांक उत्पन्न करता है:
echo random_int(1, 100);
फिर से, आउटपुट 1 से 100 के बीच एक यादृच्छिक संख्या है, जैसे कि 84
, लेकिन यादृच्छिकता का एक अधिक मजबूत आश्वासन के साथ।
गहराई से अध्ययन
rand()
समारोह PHP के शुरुआती संस्करणों से मौजूद है, यादृच्छिक संख्याएं उत्पन्न करने की प्रारंभिक पद्धति के रूप में काम करता है। हालांकि, उच्च डिग्री की यादृच्छिकता की आवश्यकता वाले एप्लिकेशनों के लिए यह सबसे अच्छा विकल्प नहीं है क्योंकि इसका अल्गोरिथ्म अपेक्षाकृत अनुमानित होता है।
PHP 4 में पेश की गई mt_rand()
, मर्सीन ट्विस्टर अल्गोरिथ्म पर आधारित है - जो कि गति और यह उत्पन्न कर सकने वाली यादृच्छिकता के मामले में rand()
की तुलना में कहीं अधिक उत्कृष्ट है। यह जल्दी ही अधिकांश गैर-क्रिप्टोग्राफिक आवश्यकताओं के लिए पसंदीदा विकल्प बन गया।
सुरक्षा-संवेदनशील एप्लिकेशनों के लिए, PHP 7 में random_int()
को क्रिप्टोग्राफिक रूप से सुरक्षित छद्म-यादृच्छिक पूर्णांक उत्पन्न करने के लिए पेश किया गया था, जो सिस्टम के यादृच्छिक संख्या जेनरेटर से यादृच्छिक बाइट्स का उपयोग करता है। यह rand()
या mt_rand()
की तुलना में काफी अधिक सुरक्षित है, जिससे यह टोकन, कुंजियों, या अन्य तत्वों की उत्पत्ति के लिए सबसे अच्छा विकल्प है जहाँ अनुमानितता सुरक्षा भेद्यताओं की ओर ले जा सकती है।
इन सुधारों के बावजूद, एप्लिकेशन के संदर्भ के आधार पर सही समारोह का चुनाव करना महत्वपूर्ण है। सामान्य उपयोग के लिए, mt_rand()
पर्याप्त है, लेकिन जो कुछ भी लक्षित या शोषित किया जा सकता है, के लिए, random_int()
जाने का रास्ता है, जो यादृच्छिकता और सुरक्षा दोनों प्रदान करता है।