在 PHP 中,mt_srand() 用于设置随机数生成器的种子,而 mt_rand() 用于生成随机数。如果你想在调用 mt_rand() 之后重新设置种子,可以再次调用 mt_srand() 方法设置新的种子。每次调用 mt_srand() 都会重置随机数生成器的状态,从而改变之后生成的随机数序列。
以下是一个示例代码:
<?php
// 设置初始种子
mt_srand(1234);
echo mt_rand() . "\n"; // 第一次随机数
// 设置新的种子
mt_srand(5678);
echo mt_rand() . "\n"; // 使用新种子生成的随机数
// 再次设置新的种子
mt_srand((int) microtime(true)); // 使用当前时间戳作为种子
echo mt_rand() . "\n";
?>
注意事项:
-
种子值的选择:种子决定了随机数序列的生成。如果你想确保序列是完全不可预测的,可以使用
microtime()或random_int()作为种子。mt_srand((int) (microtime(true) * 1000000)); // 使用当前微秒时间 -
随机性影响:如果不重新调用
mt_srand(),mt_rand()将继续基于原来的种子生成随机数序列。 -
PHP 7.1+:从 PHP 7.1 开始,
mt_srand()和mt_rand()默认使用更好的随机数种子,因此不需要手动设置种子,除非你需要确定性结果。
如果你需要更好的随机性,建议使用 PHP 的 random_int(),它依赖于系统的随机数生成器,不需要手动设置种子:
echo random_int(1, 100) . "\n";