我会用PhpUnit创建一些测试。但我想测试的php文件使用mt_rand()函数。那么如何创建一个知道mt_rand()返回值的测试呢? 感谢您回答我的问题并抱歉我的英语不好,我来自德国;)
答案 0 :(得分:14)
Mersenne Twister算法是一种确定性算法。它从种子开始,然后根据它生成随机数。因此,如果种子相同,它将生成相同的随机数。
通常PHP种子{{1}}包含一些基于mt_rand
的数据,但您可以使用mt_srand
手动播种。
microtime
请注意,两个函数调用都会为您提供相同的数字mt_srand(0);
var_dump(mt_rand());
mt_srand(0);
var_dump(mt_rand());
。
所以你基本上要做的就是手动播种,你将能够预测它产生的所有数字。
答案 1 :(得分:0)
如果每次使用相同的种子值对mt_rand进行种子处理,您将始终获得由mt_rand()返回的相同系列的值。
例如:
mt_srand(123456);
for ($i = 0; $i < 10; $i++) {
echo mt_rand(),'<br />';
}