4

配列内に複数の画像ファイル名があり、1日中固定されたランダムな画像を生成したいので、date( "Ymd")を使用して同じ日に固定シードを使用したいのですが、このシードは毎日変更されます、したがって、毎日新しいユニークなシードを生成します。

問題は、array_randがシードをパラメーターとして受け入れないことです。

4

2 に答える 2

3

date( "Ymd")によって返される人間が読める文字列のハッシュを計算すると、毎日一意のシードが取得されます

何かのようなもの:

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

デイシードでyutrand関数を初期化します。

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

これにより、画像の一定の(1日)インデックスが得られます

于 2013-03-08T15:12:37.917 に答える