الدالة rand()‎ في PHP

من موسوعة حسوب
< PHP
مراجعة 03:31، 4 أبريل 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات) (استبدال النص - 'PHP/Function/mt-rand' ب'PHP/mt rand')

(PHP 4, PHP 5, PHP 7)

تولِّد الدالة rand()‎ عددًا صحيحًا شبه عشوائي (pseudo-random integer) وتعيده.

الوصف

int rand ( void )
int rand ( int $min , int $max )

تعيد هذه الدالة عددًا شبه عشوائي تنحصر قيمته بين 0 وقيمة الدالة getrandmax()‎ إن استدعيت دون تمرير المعاملين الاختياريين min و max. أمَّا إن أردت توليد عدد عشوائي تنحصر قيمته في مجال محدَّد، فاستعمل المعاملين السابقين لتحديد ذلك المجال.

تنبيه: لا تولِّد هذه الدالة أي قيم آمنة، لذا لا يجب استعمالها لغرض التشفير مطلقًا. إن أردت توليد قيم آمنة مشفَّرة فاستعمل الدالة random_int()‎ أو الدالة random_bytes()‎ أو الدالة openssl_random_pseudo_bytes()‎.

ملاحظة: قيمة الدالة getrandmax()‎ هي 32767 فقط على بعض المنصات مثل ويندوز (windows). إن أردت مجالًا أكبر من هذا المجال (أي المجال 0 - 32767)، فاستعمل المعامل min والمعامل max لتحديد مجال أكبر تريده أو استعمل الدالة mt_rand()‎ عوضًا عن ذلك.

ملاحظة: تَستعمل الدالة rand()‎ في إصدار PHP 7.1.0 خوارزميَّة توليد الأعداد العشوائيَّة ذاتها التي تستعملها الدالة mt_rand()‎، أي خوارزميَّة Mersenne Twister. يمكن الرجوع إلى الإصدار السابق للدالة rand()‎ بأن تكون قيمة المعامل max أصغر من قيمة min؛ لكن بالنسبة للدالة mt_rand()‎، فستعيد آنذاك القيمة FALSE أي إن كان max < min.

المعاملات

min

أدنى قيمة يمكن أن تعيدها الدالة. قيمته الافتراضيَّة هي 0.

max

أعلى قيمة يمكن أن تعيدها الدالة. قيمته الافتراضيَّة هي قيمة الدالة getrandmax()‎.

القيم المعادة

يُعاد عدد صحيح شبه عشوائي يتراوح مجاله بين 0 - getrandmax()‎ إن لم يمرَّر أي معامل أو يترواح مجاله بين max - min في حال تحديد قيم هذين المعاملين.

سجل التغييرات

الإصدار الوصف
7.2.0 إصلاح خطأ يتعلق بجعل القيم غير موزعة بانتظام أي منحازة باتجاه متتالية معيَّنة (modulo bias). هذا يعني أنَّ سلسلة الأعداد المولدة باستعمال بذرة محدَّدة قد تختلف عن تلك المولدة باستعمال إصدار PHP 7.1 على نظام ذو 64 بت.
7.1.0 أصبحت اسمًا بديلًا (alias) للدالة mt_rand()‎ أي أنَّها تشير إليها.

أمثلة

المثال 1: استعمال الدالة rand()‎

<?php
echo rand() . "\n";
echo rand() . "\n";

echo rand(5, 15);
?>

سيُظهر المثال السابق ما يشبه النتيجة التالية:

7771
22264
11

ملاحظات

يجب أن تكون قيمة المعامل min والمعامل max أصغر من قيمة الدالة getrandmax()‎ أي ضمن المجال 0 - getrandmax()‎. قد يؤدي اختيار قيم أعلى من هذا المجال إلى إعادة أعداد عشوائيَّة ذات دقة سيئة.

انظر أيضًا

مصادر