PHP का mt_srand() फ़ंक्शन **मर्सन ट्विस्टर (Mersenne Twister) रैंडम नंबर जनरेटर** को सीड करता है। 'mt' प्रीफिक्स मर्सन ट्विस्टर एल्गोरिदम को इंगित करता है, जो मानक rand() से तेज़ और बेहतर गुणवत्ता वाला है। PHP में इसका उपयोग **वैकल्पिक** है क्योंकि स्वचालित सीडिंग होती है।
सिंटैक्स
mt_srand(int $seed, int $mode = MT_RAND_MT19937): void
पैरामीटर्स
| पैरामीटर | विवरण |
|---|---|
$seed | सीड पूर्णांक। नहीं देने पर रैंडम सीड। |
$mode | कार्यान्वयन मोड: MT_RAND_MT19937 (डिफ़ॉल्ट, फिक्स्ड) या MT_RAND_PHP (पुराना डिफ़ॉल्ट) |
लौटाया गया मान
कोई नहीं (void)।
उदाहरण
1. निश्चित सीड के साथ
<?php mt_srand(5); echo "mt_rand(1,100) = " . mt_rand(1, 100); ?>
mt_rand(1,100) = 12
2. टाइमस्टैम्प के साथ सीड
<?php mt_srand(time()); echo "mt_rand() = " . mt_rand(); ?>
mt_rand() = 548287992
मोड पैरामीटर (PHP 7.1+)
MT_RAND_MT19937(डिफ़ॉल्ट): फिक्स्ड, सही मर्सन ट्विस्टर कार्यान्वयन।MT_RAND_PHP: पुराना PHP डिफ़ॉल्ट कार्यान्वयन (पीछे की संगतता के लिए)।
महत्वपूर्ण नोट्स
- स्वचालित सीडिंग: PHP 4.2.0+ स्वचालित रूप से सीड करता है। मैन्युअल सीडिंग आमतौर पर अनावश्यक।
- पुनरुत्पादन: परीक्षण/डीबगिंग के लिए निश्चित सीड उपयोगी।
- सुरक्षा:
mt_rand()भी **क्रिप्टोग्राफ़िक रूप से असुरक्षित** है। सुरक्षित रैंडम के लिएrandom_int(),random_bytes()उपयोग करें। - ग्लोबल स्टेट:
mt_srand()पूरे प्रक्रिया के मर्सन ट्विस्टर स्टेट को प्रभावित करता है।
srand() बनाम mt_srand()
| पहलू | srand()/rand() | mt_srand()/mt_rand() |
|---|---|---|
| एल्गोरिदम | प्लेटफॉर्म-निर्भर (आमतौर पर libc rand) | मर्सन ट्विस्टर (MT19937) |
| गति | धीमा | ~4x तेज़ |
| रैंडमनेस गुणवत्ता | कम | बेहतर |
| अधिकतम मान | getrandmax() (अक्सर 2³¹-1) | mt_getrandmax() (2³¹-1) |
PHP संस्करण
PHP 4, PHP 5, PHP 7, PHP 8+ में उपलब्ध। मोड पैरामीटर PHP 7.1+ में।