الفرق بين المراجعتين ل"PHP/rand"
ط (استبدال النص - 'PHP/Function/rand' ب'PHP/rand') |
ط (نقل عبد اللطيف ايمش صفحة PHP/Function/rand إلى PHP/rand: إعادة هيكلة التوثيق) |
||
(6 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة) | |||
سطر 2: | سطر 2: | ||
(PHP 4, PHP 5, PHP 7) | (PHP 4, PHP 5, PHP 7) | ||
− | تولِّد الدالة <code>rand()</code> [[PHP | + | تولِّد الدالة <code>rand()</code> [[PHP/integer|عددًا صحيحًا]] شبه عشوائي (pseudo-random integer) وتعيده. |
== الوصف == | == الوصف == | ||
سطر 10: | سطر 10: | ||
</syntaxhighlight>تعيد هذه الدالة عددًا شبه عشوائي تنحصر قيمته بين 0 وقيمة الدالة <code>[[PHP/getrandmax|getrandmax()]]</code> إن استدعيت دون تمرير المعاملين الاختياريين <code>min</code> و <code>max</code>. أمَّا إن أردت توليد عدد عشوائي تنحصر قيمته في مجال محدَّد، فاستعمل المعاملين السابقين لتحديد ذلك المجال. | </syntaxhighlight>تعيد هذه الدالة عددًا شبه عشوائي تنحصر قيمته بين 0 وقيمة الدالة <code>[[PHP/getrandmax|getrandmax()]]</code> إن استدعيت دون تمرير المعاملين الاختياريين <code>min</code> و <code>max</code>. أمَّا إن أردت توليد عدد عشوائي تنحصر قيمته في مجال محدَّد، فاستعمل المعاملين السابقين لتحديد ذلك المجال. | ||
− | '''تنبيه''': لا تولِّد هذه الدالة أي قيم آمنة، لذا لا يجب استعمالها لغرض التشفير مطلقًا. إن أردت توليد قيم آمنة مشفَّرة فاستعمل الدالة <code>[[PHP/ | + | '''تنبيه''': لا تولِّد هذه الدالة أي قيم آمنة، لذا لا يجب استعمالها لغرض التشفير مطلقًا. إن أردت توليد قيم آمنة مشفَّرة فاستعمل الدالة <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/getrandmax|getrandmax()]]</code> هي 32767 فقط على بعض المنصات مثل ويندوز (windows). إن أردت مجالًا أكبر من هذا المجال (أي المجال 0 - 32767)، فاستعمل المعامل <code>min</code> والمعامل <code>max</code> لتحديد مجال أكبر تريده أو استعمل الدالة <code>[[PHP/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> عوضًا عن ذلك. | ||
سطر 57: | سطر 57: | ||
== انظر أيضًا == | == انظر أيضًا == | ||
− | * الدالة <code>[[PHP | + | * الدالة <code>[[PHP/srand|srand()]]</code>: تحديد البذرة (seed) المستخدمة في خوارزميَّة توليد الأعداد العشوائيَّة. |
* الدالة <code>[[PHP/mt rand|mt_rand()]]</code>: تولِّد عددًا عشوائيًّا باستعمال خوارزميَّة Mersenne Twister لتوليد أعداد عشوائيَّة. | * الدالة <code>[[PHP/mt rand|mt_rand()]]</code>: تولِّد عددًا عشوائيًّا باستعمال خوارزميَّة Mersenne Twister لتوليد أعداد عشوائيَّة. | ||
* الدالة <code>[[PHP/getrandmax|getrandmax()]]</code>: تعيد أكبر قيمة عشوائيَّة محتملة. | * الدالة <code>[[PHP/getrandmax|getrandmax()]]</code>: تعيد أكبر قيمة عشوائيَّة محتملة. | ||
− | * الدالة <code>[[PHP/ | + | * الدالة <code>[[PHP/random_int|random_int()]]</code>: تولِّد [[PHP/integer|عددًا صحيحًا]] آمنًا شبه عشوائي يمكن استعماله لغرض التشفير. |
− | * الدالة <code>[[PHP/ | + | * الدالة <code>[[PHP/random_bytes|random_bytes()]]</code>: تولِّد [[PHP/string|سلسلة نصيَّة (string)]] شبه عشوائيَّة ذات حجم محدَّد يمكن استعمالها لغرض التشفير. |
− | * الدالة <code>[[PHP/ | + | * الدالة <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()
. قد يؤدي اختيار قيم أعلى من هذا المجال إلى إعادة أعداد عشوائيَّة ذات دقة سيئة.
انظر أيضًا
- الدالة
srand()
: تحديد البذرة (seed) المستخدمة في خوارزميَّة توليد الأعداد العشوائيَّة. - الدالة
mt_rand()
: تولِّد عددًا عشوائيًّا باستعمال خوارزميَّة Mersenne Twister لتوليد أعداد عشوائيَّة. - الدالة
getrandmax()
: تعيد أكبر قيمة عشوائيَّة محتملة. - الدالة
random_int()
: تولِّد عددًا صحيحًا آمنًا شبه عشوائي يمكن استعماله لغرض التشفير. - الدالة
random_bytes()
: تولِّد سلسلة نصيَّة (string) شبه عشوائيَّة ذات حجم محدَّد يمكن استعمالها لغرض التشفير. - الدالة
openssl_random_pseudo_bytes()
: تولِّد سلسلة نصيَّة (string) شبه عشوائية ذات حجم محدَّد.