php mt_srand 之后执行mt_rand 一次后,怎么产生新的种子

在 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";
?>

注意事项:

  1. 种子值的选择:种子决定了随机数序列的生成。如果你想确保序列是完全不可预测的,可以使用 microtime()random_int() 作为种子。

    mt_srand((int) (microtime(true) * 1000000)); // 使用当前微秒时间
  2. 随机性影响:如果不重新调用 mt_srand()mt_rand() 将继续基于原来的种子生成随机数序列。

  3. PHP 7.1+:从 PHP 7.1 开始,mt_srand()mt_rand() 默认使用更好的随机数种子,因此不需要手动设置种子,除非你需要确定性结果。

如果你需要更好的随机性,建议使用 PHP 的 random_int(),它依赖于系统的随机数生成器,不需要手动设置种子:

echo random_int(1, 100) . "\n";

PhpAdmin|京ICP备15005914号
一个简单使用的管理系统。