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

من موسوعة حسوب
< PHP
طلا ملخص تعديل
ط نقل عبد اللطيف ايمش صفحة PHP/Function/rand إلى PHP/rand: إعادة هيكلة التوثيق
 
(9 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 2: سطر 2:
(PHP 4, PHP 5, PHP 7)
(PHP 4, PHP 5, PHP 7)


تولِّد الدالة <code>rand()‎</code> [[PHP/Types/integer|عددًا صحيحًا]] شبه عشوائي (pseudo-random integer) وتعيده.
تولِّد الدالة <code>rand()‎</code> [[PHP/integer|عددًا صحيحًا]] شبه عشوائي (pseudo-random integer) وتعيده.


== الوصف ==
== الوصف ==
سطر 8: سطر 8:
int rand ( void )
int rand ( void )
int rand ( int $min , int $max )
int rand ( int $min , int $max )
</syntaxhighlight>تعيد هذه الدالة عددًا شبه عشوائي تنحصر قيمته بين 0 وقيمة الدالة <code>[[PHP/Function/getrandmax|getrandmax()‎]]</code> إن استدعيت دون تمرير المعاملين الاختياريين <code>min</code> و <code>max</code>. أمَّا إن أردت توليد عدد عشوائي تنحصر قيمته في مجال محدَّد، فاستعمل المعاملين السابقين لتحديد ذلك المجال.
</syntaxhighlight>تعيد هذه الدالة عددًا شبه عشوائي تنحصر قيمته بين 0 وقيمة الدالة <code>[[PHP/getrandmax|getrandmax()‎]]</code> إن استدعيت دون تمرير المعاملين الاختياريين <code>min</code> و <code>max</code>. أمَّا إن أردت توليد عدد عشوائي تنحصر قيمته في مجال محدَّد، فاستعمل المعاملين السابقين لتحديد ذلك المجال.


'''تنبيه''': لا تولِّد هذه الدالة أي قيم آمنة، لذا لا يجب استعمالها لغرض التشفير مطلقًا. إن أردت توليد قيم آمنة مشفَّرة فاستعمل الدالة <code>[[PHP/Function/random-int|random_int()‎]]</code> أو الدالة <code>[[PHP/Function/random-bytes|random_bytes()‎]]</code> أو الدالة <code>[[PHP/Function/openssl-random-pseudo-bytes|openssl_random_pseudo_bytes()‎]]</code>.
'''تنبيه''': لا تولِّد هذه الدالة أي قيم آمنة، لذا لا يجب استعمالها لغرض التشفير مطلقًا. إن أردت توليد قيم آمنة مشفَّرة فاستعمل الدالة <code>[[PHP/random_int|random_int()‎]]</code> أو الدالة <code>[[PHP/random_bytes|random_bytes()‎]]</code> أو الدالة <code>[[PHP/openssl_random_pseudo_bytes|openssl_random_pseudo_bytes()‎]]</code>.


'''ملاحظة''': قيمة الدالة <code>[[PHP/Function/getrandmax|getrandmax()‎]]</code> هي 32767 فقط على بعض المنصات مثل ويندوز (windows). إن أردت مجالًا أكبر من هذا المجال (أي المجال 0 - 32767)، فاستعمل المعامل <code>min</code> والمعامل <code>max</code> لتحديد مجال أكبر تريده أو استعمل الدالة <code>[[PHP/Function/mt-rand|mt_rand()‎]]</code> عوضًا عن ذلك.
'''ملاحظة''': قيمة الدالة <code>[[PHP/getrandmax|getrandmax()‎]]</code> هي 32767 فقط على بعض المنصات مثل ويندوز (windows). إن أردت مجالًا أكبر من هذا المجال (أي المجال 0 - 32767)، فاستعمل المعامل <code>min</code> والمعامل <code>max</code> لتحديد مجال أكبر تريده أو استعمل الدالة <code>[[PHP/mt rand|mt_rand()‎]]</code> عوضًا عن ذلك.


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


== المعاملات ==
== المعاملات ==
سطر 22: سطر 22:


=== <code>max</code> ===
=== <code>max</code> ===
أعلى قيمة يمكن أن تعيدها الدالة. قيمته الافتراضيَّة هي قيمة الدالة <code>[[PHP/Function/getrandmax|getrandmax()‎]]</code>.
أعلى قيمة يمكن أن تعيدها الدالة. قيمته الافتراضيَّة هي قيمة الدالة <code>[[PHP/getrandmax|getrandmax()‎]]</code>.


== القيم المعادة ==
== القيم المعادة ==
يُعاد عدد صحيح شبه عشوائي يتراوح مجاله بين 0 - <code>[[PHP/Function/getrandmax|getrandmax()‎]]</code> إن لم يمرَّر أي معامل أو يترواح مجاله بين <code>max - min</code> في حال تحديد قيم هذين المعاملين.
يُعاد عدد صحيح شبه عشوائي يتراوح مجاله بين 0 - <code>[[PHP/getrandmax|getrandmax()‎]]</code> إن لم يمرَّر أي معامل أو يترواح مجاله بين <code>max - min</code> في حال تحديد قيم هذين المعاملين.


== سجل التغييرات ==
== سجل التغييرات ==
سطر 36: سطر 36:
|-
|-
|7.1.0
|7.1.0
|أصبحت اسمًا بديلًا (alias) للدالة <code>[[PHP/Function/mt-rand|mt_rand()‎]]</code> أي أنَّها تشير إليها.
|أصبحت اسمًا بديلًا (alias) للدالة <code>[[PHP/mt rand|mt_rand()‎]]</code> أي أنَّها تشير إليها.
|}
|}


سطر 54: سطر 54:


== ملاحظات ==
== ملاحظات ==
يجب أن تكون قيمة المعامل <code>min</code> والمعامل <code>max</code> أصغر من قيمة الدالة <code>[[PHP/Function/getrandmax|getrandmax()‎]]</code> أي ضمن المجال 0 - <code>[[PHP/Function/getrandmax|getrandmax()‎]]</code>. قد يؤدي اختيار قيم أعلى من هذا المجال إلى إعادة أعداد عشوائيَّة ذات دقة سيئة.
يجب أن تكون قيمة المعامل <code>min</code> والمعامل <code>max</code> أصغر من قيمة الدالة <code>[[PHP/getrandmax|getrandmax()‎]]</code> أي ضمن المجال 0 - <code>[[PHP/getrandmax|getrandmax()‎]]</code>. قد يؤدي اختيار قيم أعلى من هذا المجال إلى إعادة أعداد عشوائيَّة ذات دقة سيئة.


== انظر أيضًا ==
== انظر أيضًا ==
* الدالة <code>[[PHP/Function/srand|srand()‎]]</code>: تحديد البذرة (seed) المستخدمة في خوارزميَّة توليد الأعداد العشوائيَّة.
* الدالة <code>[[PHP/srand|srand()‎]]</code>: تحديد البذرة (seed) المستخدمة في خوارزميَّة توليد الأعداد العشوائيَّة.
* الدالة <code>[[PHP/Function/mt-rand|mt_rand()‎]]</code>: تولِّد عددًا عشوائيًّا باستعمال خوارزميَّة Mersenne Twister لتوليد أعداد عشوائيَّة.
* الدالة <code>[[PHP/mt rand|mt_rand()‎]]</code>: تولِّد عددًا عشوائيًّا باستعمال خوارزميَّة Mersenne Twister لتوليد أعداد عشوائيَّة.
* الدالة <code>[[PHP/Function/getrandmax|getrandmax()‎]]</code>: تعيد أكبر قيمة عشوائيَّة محتملة.
* الدالة <code>[[PHP/getrandmax|getrandmax()‎]]</code>: تعيد أكبر قيمة عشوائيَّة محتملة.
* الدالة <code>[[PHP/Function/random-int|random_int()‎]]</code>: تولِّد [[PHP/Types/integer|عددًا صحيحًا]] آمنًا شبه عشوائي يمكن استعماله لغرض التشفير.
* الدالة <code>[[PHP/random_int|random_int()‎]]</code>: تولِّد [[PHP/integer|عددًا صحيحًا]] آمنًا شبه عشوائي يمكن استعماله لغرض التشفير.
* الدالة <code>[[PHP/Function/random-bytes|random_bytes()‎]]</code>: تولِّد [[PHP/Types/string|سلسلة نصيَّة (string)]] شبه عشوائيَّة ذات حجم محدَّد يمكن استعمالها لغرض التشفير.
* الدالة <code>[[PHP/random_bytes|random_bytes()‎]]</code>: تولِّد [[PHP/string|سلسلة نصيَّة (string)]] شبه عشوائيَّة ذات حجم محدَّد يمكن استعمالها لغرض التشفير.
* الدالة <code>[[PHP/Function/openssl-random-pseudo-bytes|openssl_random_pseudo_bytes()‎]]</code>: تولِّد [[PHP/Types/string|سلسلة نصيَّة (string)]] شبه عشوائية ذات حجم محدَّد.
* الدالة <code>[[PHP/openssl_random_pseudo_bytes|openssl_random_pseudo_bytes()‎]]</code>: تولِّد [[PHP/string|سلسلة نصيَّة (string)]] شبه عشوائية ذات حجم محدَّد.


== مصادر ==
== مصادر ==

المراجعة الحالية بتاريخ 03:50، 4 أبريل 2018

(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()‎. قد يؤدي اختيار قيم أعلى من هذا المجال إلى إعادة أعداد عشوائيَّة ذات دقة سيئة.

انظر أيضًا

مصادر