我在一个数组中有多个图像文件名,并希望生成一整天固定的随机图像,因此我想使用固定种子在同一天使用日期(" Ymd&#34 ;)这种种子每天都会改变,因此每天都会产生新的独特种子。
问题是array_rand不接受种子作为参数。
答案 0 :(得分:2)
计算由日期返回的人类可读字符串的哈希值(“Ymd”),您将获得每天的唯一种子
类似的东西:
$seed = md5(date("Ymd"));
使用你的日期种子初始你的rand功能:
srand((int)$seed);
你的新数组索引将是:
$random_array_index = $rand() % $array_size;
答案 1 :(得分:1)
拥有相同的种子并不能保证每次都能得到相同的数字。我会创建一些伪随机函数,例如依赖于年,月和日,但不是小时,分钟,秒,这将仅从这些值给出相同的结果,例如
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);
}
这将为您提供图片的常量(一天)索引