У меня есть массив записей из базы данных (хотя база данных не имеет отношения к этому вопросу - в конечном итоге она становится массивом «строк», каждая строка представляет собой массив со строковыми ключами, соответствующими имени поля).Например:
$items = array(
1 => array('id' => 1, 'name' => 'John', 'created' => '2011-08-14 8:47:39'),
2 => array('id' => 2, 'name' => 'Mike', 'created' => '2011-08-30 16:00:12'),
3 => array('id' => 5, 'name' => 'Jane', 'created' => '2011-09-12 2:30:00'),
4 => array('id' => 7, 'name' => 'Mary', 'created' => '2011-09-14 1:18:40'),
5 => array('id' => 16, 'name' => 'Steve', 'created' => '2011-09-14 3:10:30'),
//etc...
);
Я хочу перетасовать этот массив, но каким-то образом придать больший вес элементам с более поздней «созданной» временной меткой.Случайность не обязательно должна быть идеальной, и точный вес для меня не имеет значения.Другими словами, если есть какая-то быстрая и простая техника, которая вроде бы вроде случайна людям, но не математически случайна, я в порядке с этим.Кроме того, если это нелегко сделать с «бесконечным континуумом» временных меток, было бы хорошо, если бы я назначил каждую запись какому-либо дню или неделе и просто выполнил взвешивание на основе того, в каком дне или неделе они находятся..
Относительно быстрый / эффективный метод предпочтительнее, поскольку эта рандомизация будет происходить при каждой загрузке страницы определенной страницы на моем веб-сайте (но если это невозможно сделать эффективно, у меня все в порядке с периодическим запуском икеширование результата).