如何在 PHP 中生成具有时间间隔的随机数

How can I generate a random with time interval in PHP

我有代码:

$length = 16;
$characters = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
   $randomString .= $characters[rand(0, strlen($characters) - 1)];
}
$key = $randomString;

如果10分钟后字符串会被洗牌,而且每10分钟字符串总是相同的,如何解决?

如果您希望随机数生成器在每次运行时生成相同 随机数序列,那么您需要种子具有相同值的随机生成器。因此,如果您想要十分钟间隔的同一组数字,那么您需要找到一种方法来创建一个种子值,该种子值在十分钟内保持不变,然后更改为其他值。

10 分钟是 600 秒,所以如果您将当前时间图除以 600,并且只取结果的整数部分 - 那么您将得到一个每十分钟更改一次的种子值。

$seed = floor(strtotime('2021-01-01 12:00:00')/600);
srand($seed);

$length = 16;
$characters = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
   $randomString .= $characters[rand(0, strlen($characters) - 1)];
}
echo $randomString;

试试上面的代码,然后更改日期值的时间部分。首先将其设置为 12:03:00 - 应该仍会为您提供相同的随机字符串。改成12:09:59,还是一样的字符串。使其成为 12:10:00 - 不同的字符串!

所以要让这段代码每十分钟生成一个新的随机字符串,只需将它与当前时间戳一起使用,

$seed = floor(time()/600);