Функция "тест" Рэнд т с PHPUnit
Я бы создал некоторые тесты с PhpUnit. Но файл php, который я хотел бы протестировать, использует функцию mt_rand (). Итак, как я могу создать тест, который знает значение mt_rand () возвращает в последний раз? Спасибо за ответ на мой вопрос и извините за мой плохой английский, я из Германии ;)
2 ответов
на Мерсенн Твистер алгоритм является детерминированным алгоритмом. Она начинается с семян, а затем генерирует случайные числа. Таким образом, учитывая, что семя одно и то же, оно будет генерировать одни и те же случайные числа.
обычно PHP семена mt_rand
С microtime
на основе данных, но вы можете вручную заполнить его с помощью mt_srand
.
mt_srand(0);
var_dump(mt_rand());
mt_srand(0);
var_dump(mt_rand());
обратите внимание, что оба вызова функций дадут вам один и тот же номер 963932192
.
так что все вы в основном нужно сделать, это посеять его вручную, и вы сможете предсказать все числа, которые он генерирует.
Если вы каждый раз засеваете mt_rand одним и тем же значением, вы всегда получите один и тот же ряд значений, возвращаемых mt_rand().
например:
mt_srand(123456);
for ($i = 0; $i < 10; $i++) {
echo mt_rand(),'<br />';
}