Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带种子的数组_Php_Arrays_Random_Seed - Fatal编程技术网

Php 带种子的数组

Php 带种子的数组,php,arrays,random,seed,Php,Arrays,Random,Seed,我在一个数组中有多个图像文件名,希望生成一整天固定的随机图像,因此我希望使用日期(“Ymd”)在同一天使用固定种子,该种子将每天更改,从而每天生成新的唯一种子 问题是array_rand不接受seed作为参数。计算date返回的可读字符串(“Ymd”)的散列,您将得到每天唯一的seed 比如: $seed = md5(date("Ymd")); 使用日种子初始化yout rand函数: srand((int)$seed); 您的新数组索引将是: $random_array_index = $

我在一个数组中有多个图像文件名,希望生成一整天固定的随机图像,因此我希望使用日期(“Ymd”)在同一天使用固定种子,该种子将每天更改,从而每天生成新的唯一种子


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

计算date返回的可读字符串(“Ymd”)的散列,您将得到每天唯一的seed

比如:

$seed = md5(date("Ymd"));
使用日种子初始化yout 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);
}

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

谢谢您的提示,但问题是数组不接受种子输入。我该怎么做?问题出在哪里?让我们用另一个PRNG函数计算数组索引!;)$array_index=rand()%$arraysize;看看我的答案,我刚刚编辑了itremember sr,并使用长数字和哈希包含字符dude,md5返回字符。种子只能接受数字。在发布之前请尝试您的代码。thanksi编辑了这个问题,因为它不清楚。数组\u rand不接受种子作为输入。您不需要获取随机数组,只需要一张图片。我重新编辑了答案,函数给出了这个索引。G_G也是个好主意,因为它的数学基础是相同的。警告!你的代码有一个严重的错误!如果图像的数量(数组的长度)大于给定的$year*$month*$day(可能是这样!),那么代码将只选择图像的一小部分。@G\u G这就是我使用模(
%
运算符)的原因。事实上,我们的解决方案在这一点上是相等的:)对于更大的种子,您甚至可以将其乘以1到2744之间的数字。请注意,由于模块%仅限于int-length值,所以不能再高