【问题标题】:How can I generate a random with time interval in PHP如何在 PHP 中生成具有时间间隔的随机数
【发布时间】:2021-11-22 18:30:10
【问题描述】:

我有代码:

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

如果字符串在 10 分钟后会被洗牌,并且每 10 分钟字符串总是相同的,如何解决这个问题?

【问题讨论】:

  • 为什么你认为每 10 分钟后它会一样?我还建议在生成随机字符串之前对字符串进行洗牌。这将改善随机行为,因为它现在排列整齐。
  • 不,它不会一样。每次调用随机字符串都会有所不同。

标签: php random time intervals


【解决方案1】:

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

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); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 2011-10-03
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多