अधिक एन्ट्रॉपी का उपयोग किए बिना, uniqid
मूल रूप से निम्नलिखित करता है (देखें का स्रोत uniqid.c
):
$time = explode(' ', microtime(false));
return sprintf('%s%08x%05x', $prefix, $time[1], $time[0] * 1000000);
तो यह मूल रूप से माइक्रोसेकंड में वर्तमान समय लेता है और उन्हें हेक्साडेसिमल प्रतिनिधित्व में बदल देता है और इसे उपसर्ग में जोड़ता है। यह पहले से ही अद्वितीय मान प्रदान करता है।
लेकिन मान काफी यादृच्छिक नहीं हैं। अधिक यादृच्छिक मान प्राप्त करने के लिए, आपको दूसरा पैरामीटर more_entropy सेट करके अधिक एन्ट्रॉपी जोड़ना चाहिए . उस स्थिति में PHP का आंतरिक रैखिक सर्वांगसम जनरेटर
php_combined_lcg
(देखें lgc.c का स्रोत
) का उपयोग छद्म-यादृच्छिक संख्या उत्पन्न करने के लिए किया जाता है जो अंत में संलग्न होता है, उन्हें और अधिक यादृच्छिक बनाने के लिए लगभग 30 बिट अतिरिक्त एन्ट्रॉपी जोड़ते हैं।