Mt_srand()和srand() -是否需要将种子重置为随机数?


mt_srand() and srand() - is it necessary to reset the seed to a random number?

我的代码中有一个函数,它使用种子来获得可预测的(基于种子的)随机数集。

$seed = 1234;
mt_srand($seed);
echo mt_rand(0,10);
echo mt_rand(0,10);
echo mt_rand(0,10);
echo mt_rand(0,10);

是否有必要在我的函数结束时调用mt_srand(),以便在我完成后将其重置为随机种子?

是。mt_rand()的状态是全局的—如果您的函数将其设置为固定值,则在函数退出后它将保持该状态。虽然调用mt_srand()并不理想,因为这将破坏任何其他试图设置固定种子的函数,但仍然最好让随机数生成器处于非随机状态。