如何在 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);
我有代码:
$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);