配列内に複数の画像ファイル名があり、1日中固定されたランダムな画像を生成したいので、date( "Ymd")を使用して同じ日に固定シードを使用したいのですが、このシードは毎日変更されます、したがって、毎日新しいユニークなシードを生成します。
問題は、array_randがシードをパラメーターとして受け入れないことです。
date( "Ymd")によって返される人間が読める文字列のハッシュを計算すると、毎日一意のシードが取得されます
何かのようなもの:
$seed = md5(date("Ymd"));
デイシードでyutrand関数を初期化します。
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);
}
これにより、画像の一定の(1日)インデックスが得られます