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

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

(PHP 4, PHP 5, PHP 7)

تحدِّد الدالة mt_srand()‎ البذرة (seed) المستعملة في خوارزميَّة Mersenne Twister لتوليد أعداد عشوائيَّة.

الوصف

void mt_srand ([ int $seed [, int $mode = MT_RAND_MT19937 ]] )

تحدِّد هذه الدالة قيمة البذرة المستعملة في خوارزميَّة Mersenne Twister عند توليد أعداد عشوائيَّة. تكون قيمة البذرة هي المعامل seed المُمرَّر  إلى الدالة، وإن لم يُعطَ هذا المعامل فستكون قيمة البذرة هي قيمة عشوائيَّة.

ملاحظة: لا حاجة لتحديد قيمة البذرة باستدعاء هذه الدالة أو الدالة srand()‎ في كل مرة تريد فيها توليد أعداد عشوائيَّة، سواءً باستعمال الدالة rand()‎ أو الدالة mt_rand()‎، إذ تُحدَّد قيمة البذرة آنذاك تلقائيًّا.

المعاملات

seed

قيمة عدديَّة صحيحة التي ستُحدِّد قيمة البذرة.

mode

استعمل أحد الثوابت الموضَّحة في الجدول التالي لتحديد طريقة عمل الخوارزميَّة.

الثابت الوصف
MT_RAND_MT19937 استعمال خوارزميَّة Mersenne Twister المعدَّلة الصحيحة التي أصبحت متاحة منذ إصدار PHP 7.1.0.
MT_RAND_PHP استعمال خوارزمية Mersenne Twister التي تحوي بعض الأخطاء في طريقة عملها والتي تُعدُّ الخوارزميَّة الافتراضيَّة حتى إصدار PHP 7.1.0. أتيح هذا الوضع من أجل استعمال الإصدار السابق، غير المعدَّل، من الخوارزميَّة.

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

لا توجد أي قيمة معادة.

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

الإصدار الوصف
7.1.0 أصبحت الدالة srand()‎ اسمًا بديلًا عن الدالة mt_srand()‎ أي أنَّها تشير إليها.
7.1.0 تستعمل الدالة mt_rand()‎ النسخة المعدَّلة الصحيحة من خوارزمية Mersenne Twister. يمكن الرجوع إلى النسخة السابقة -ما قبل التعديل- بتحديد الثابت MT_RAND_PHP للمعامل mode في الدالة mt_srand()‎.
5.2.1 تستعمل الخوارزميَّة Mersenne Twister أثناء تنفيذها الآن خوارزميَّة جديدة لاختيار البذرة التي أنشأها Richard Wagner. لن تُولَّد بعد الآن سلسلة الأعداد العشوائيَّة ذاتها عند استعمال البذرة ذاتها كما في النسخة السابقة. من غير المتوقع تغيير طريقة العمل هذه مرة أخرى، ومع ذلك تُعدُّ هذه الطريقة غير آمنة للاعتماد عليها.

أمثلة

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

<?php
// تحديد البذرة باستعمال الثواني
function make_seed()
{
  list($usec, $sec) = explode(' ', microtime());
  return $sec + $usec * 1000000;
}
mt_srand(make_seed());
$randval = mt_rand();
?>

انظر أيضًا

  • الدالة mt_rand()‎: تولِّد قيمة عدديَّة عشوائيَّة صحيحة باستعمال خوارزمية Mersenne Twister.
  • الدالة mt_getrandmax()‎: تعيد أكبر قيمة عدديَّة عشوائيَّة يمكن أن تولِّدها الدالة mt_rand()‎.
  • الدالة srand()‎: تحديد البذرة المستعملة في خوارزميَّة توليد أعداد عشوائيَّة.

مصادر