گاهی اوقات در کدهای خود نیاز داریم تا یک عدد بهصورت کاملا تصادفی ایجاد کنیم. برای مثال تصورکنید میخواهیم برای تایید شماره تلفن یک کاربر و تکمیل فرآیند احراز هویت، یک عدد ۶رقمی به تلفن همراه از ارسال کنیم. آیا عددی که به کاربران خود پیامک میکنیم باید یکسان باشند و یا تصادف و رندوم؟
با بررسی مثال بالا، به این نتیجه میرسیم که وجود ساختاری برای ایجاد یک عدد تصادفی کاملا لازم و ضروری است. در php میتوانیم با استفاده از تابع rand چنین عددی را ایجاد کنیم.
تابع rand را میتوان به دو صورت استفاده کرد، هم بدون ورودی و هم با ورودی. زمانیکه این تابع را بدون هیچ ورودی فراخوانی کنیم، یک عدد تصادفی بزرگتر از صفر را بهعنوان نتیجه بازمیگرداند. با هربار فراخوانی این تابع، یک عدد تصادفی دیگر خواهیم گرفت:
$r1 = rand(); // ذخیرهی نتیجهی تابع در یک متغیر
$r2 = rand(); // ذخیرهی نتیجهی تابع در یک متغیر
$r3 = rand(); // ذخیرهی نتیجهی تابع در یک متغیر
$r4 = rand(); // ذخیرهی نتیجهی تابع در یک متغیر
echo "r1: {$r1} and r2: {$r2} and r3: {$r3} and r4: {$r4}";r1: 2021582895 and r2: 609342864 and r3: 889083384 and r4: 207838700همانطور که توضیح دادیم اگر تابع rand را به سادهترین حالت بدون حتی یک ورودی، فراخوانی کنیم، یک عدد تصادفی بزرگتر از صفر دریافت خواهیم کرد. اما نباید انتظار داشت که عددی ۲۰رقمی و یا ۴۰رقمی دریافت کرد. در حالتیکه این تابع ورودی نداشتهباشد، عدد تصادفی کوچکتر از حال تابع getrandmax خواهدبود. به مثال زیر دقتکنید:
$randMax = getrandmax();
echo "result of rand() function will be less than {$randMax}";result of rand() function will be less than 2147483647در مثالی که ابتدای این آموزش مطرح کردیم، نیاز داشتیم یک عدد تصادفی ۶رقمی را به کاربران خود ارسال کنیم، ولی ممکن است تابع rand عددی ۴رقمی و یا ۸رقمی ایجاد کند. برای مشخصکردن کوچکترین و بزرگترین عدد تصادفی موردنظر باید این دو مقدار را به عنوان ورودی هنگام فراخوانی به تابع rand بدهیم:
$r1 = rand(1, 10); // عدد تصادفی بین ۱ و ۱۰
$r2 = rand(100, 40); // عدد تصادفی بین ۴۰ و ۱۰۰
$r3 = rand(111111, 999999); // عدد تصادفی ۶رقمی
echo "r1: {$r1} and r2: {$r2} and r3: {$r3}";r1: 6 and r2: 37 and r3: 319487بهصورت پیشفرض ابتدا عدد کوچکتر و سپس عدد بزرگتر را بهعنوان ورودی به تابع میدهیم ولی اگر ترتیب ورودیها را هم جابهجا کنیم و در ابتدا عدد بزرگتر را بنویسیم، همچنان تابع rand بهدرستی اجرا میشود و خطایی دریافت نخواهیم کرد.