带种子的array_rand

时间:2013-03-08 15:04:28

标签: php arrays random seed

我在一个数组中有多个图像文件名,并希望生成一整天固定的随机图像,因此我想使用固定种子在同一天使用日期(" Ymd&#34 ;)这种种子每天都会改变,因此每天都会产生新的独特种子。

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

2 个答案:

答案 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);
}

这将为您提供图片的常量(一天)索引