توی این تاپیک خواستم در مورد تابع srand که استاد بهش اشاره کردند توضیح بدم.
این تابع در واقع seed یک مولد عدد تصادفی رو تعیین میکنه. مولدهای اعداد تصادفی مثل توابع rand یا mt_rand بر اساس الگوهای شبه تصادفی عمل میکنند. در این شیوه، مولد با گرفتن یک عدد اولیه به نام seed الگوریتمهایی رو پیش میبره که نهایتا به عدد تصادفی میرسه.
در توابع رندوم مثل rand یا mt_rand عدد seed به طور خودکار انتخاب میشه ولی ما با استفاده از تابع srand میتونیم seed رو به صورت دستی انتخاب کنیم.
عدد انتخابشده توسط تابع srand بر روی خروجی توابعی مثل rand یا mt_rand تأثیر میگذاره و یک seed همیشه یک رشته اعداد تصادفی رو به دست میده. به همین دلیل سایت php.net استفاده از این توابع رو برای ایجاد اعداد تصادفی جهت اهداف رمزنگاری توصیه نمیکنه. اما srand بر توابعی مثل random_int و random_bytes و openssl_random_psuedo_bytes تأثیر نمیذاره چرا که این توابع حتما seed خودشون رو تصادفی انتخاب میکنند و seed دستی نمیپذیرند.
همچنین تابع srand از php 7.1 به بعد، نام دیگری برای تابع mt_srand هست.