4

我在一个数组中有多个图像文件名,并且想生成固定一整天的随机图像,因此我想使用 date("Ymd") 在同一天使用固定种子,并且该种子将每天更改,从而每天产生新的独特种子。

问题是 array_rand 不接受种子作为参数。

4

2 回答 2

3

计算由 date("Ymd") 返回的人类可读字符串的哈希值,您将获得每天唯一的种子

就像是:

$seed = md5(date("Ymd"));

用你的日种子初始化你的 rand 函数:

srand((int)$seed);

您的新数组索引将是:

$random_array_index = $rand() % $array_size;
于 2013-03-08T15:11:03.490 回答
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);
}

这将为您提供图片的恒定(一天)索引

于 2013-03-08T15:12:37.917 回答