الفرق بين المراجعتين لصفحة: «PHP/mt rand»

من موسوعة حسوب
< PHP
ط إزالة سطر فارغ
طلا ملخص تعديل
سطر 25: سطر 25:
يُعاد عددًا صحيحًا شبه عشوائي يتراوح مجاله بين 0 - <code>mt_getrandmax()‎</code> إن لم يمرَّر أي معامل أو يترواح مجاله بين <code>max - min</code> في حال تحديد قيم هذين المعاملين. إن كانت قيمة المعامل <code>max</code> أصغر من قيمة المعامل <code>min</code>، فستُعاد القيمة <code>FALSE</code>.
يُعاد عددًا صحيحًا شبه عشوائي يتراوح مجاله بين 0 - <code>mt_getrandmax()‎</code> إن لم يمرَّر أي معامل أو يترواح مجاله بين <code>max - min</code> في حال تحديد قيم هذين المعاملين. إن كانت قيمة المعامل <code>max</code> أصغر من قيمة المعامل <code>min</code>، فستُعاد القيمة <code>FALSE</code>.


= سجل التغييرات =
== سجل التغييرات ==
{| class="wikitable"
{| class="wikitable"
!الإصدار
!الإصدار

مراجعة 12:23، 23 مارس 2018

(PHP 4, PHP 5, PHP 7)

تولِّد الدالة mt_rand()‎ عددًا صحيحًا شبه عشوائي (pseudo-random integer) وتعيده وذلك باستعمال خوارزميَّة Mersenne Twister.

الوصف

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

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

تعيد معظم الخوارزميات التي تستعملها الدوال التابعة لمكتبة libcs لتوليد أعداد عشوائيَّة قيمًا مريبة أو ذات خصائص غير معروفة وتكون بطيئة في توليد الأعداد بعض الشيء. إن وازنَّا الدالة mt_rand()‎ مع الدالة rand()‎، نجد أنَّ الأولى تستعمل خوارزميَّة Mersenne Twister لتوليد أعداد شبه عشوائيَّة ذات خصائص معلومة وتُنفَّذ بطريقة أسرع بأربع أضعاف بالموازنة مع الخوارزميَّة التي تستعملها الدالة الثانية، لذا نجد أنَّ الدالة mt_rand()‎ حلت مكان الدالة rand()‎ التابعة لمكتبة libcs.

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

المعاملات

min

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

max

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

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

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

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

الإصدار الوصف
7.2.0 إصلاح خطأ يتعلق بانحياز باقي القسمة (modulo bias). هذا يعني أنَّ سلسلة الأعداد المولدة باستعمال بذرة محدَّدة قد تختلف عن تلك المولدة باستعمال إصدار PHP 7.1 على نظام ذو 64 بت.
7.1.0 أصبحت الدالة rand()‎ مشابهة تمامًا للدالة mt_rand()‎.
7.1.0 تستعمل الدالة mt_rand()‎ النسخة المعدَّلة الصحيحة من خوارزميَّة Mersenne Twister. يمكن الرجوع إلى النسخة السابقة -ما قبل التعديل- بتحديد الثابت MT_RAND_PHP للمعامل mode في الدالة mt_srand().
5.3.4 إظهار الخطأ E_WARNING وإعادة القيمة FALSE إن كانت قيمة max أصغر من قيمة min أي max < min.

أمثلة

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

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

echo mt_rand(5, 15);
?>

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

1604716014
1478613278
6

ملاحظات

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

انظر أيضًا

مصادر