我在一个数组中有多个图像文件名,并且想生成固定一整天的随机图像,因此我想使用 date("Ymd") 在同一天使用固定种子,并且该种子将每天更改,从而每天产生新的独特种子。
问题是 array_rand 不接受种子作为参数。
计算由 date("Ymd") 返回的人类可读字符串的哈希值,您将获得每天唯一的种子
就像是:
$seed = md5(date("Ymd"));
用你的日种子初始化你的 rand 函数:
srand((int)$seed);
您的新数组索引将是:
$random_array_index = $rand() % $array_size;
拥有相同的种子并不能保证您每次都会获得相同的数字。我会创建一些伪随机函数,例如依赖于年、月和日,但不依赖于小时、分钟、秒,它只会从这些值中给出相同的结果,例如
function pseudorandom_day_image_index($array_of_pictures){
$year=date('Y');
$month=date('m');
$day=date('d');
return ($year*$month*$day) % count($array_of_pictures);
}
这将为您提供图片的恒定(一天)索引