我有一个来自数据库的记录数组(尽管数据库与这个问题无关——它最终变成了一个“行”数组,每一行都是一个数组,其中字符串键对应于字段名)。例如:
$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...
);
我想要做的是打乱这个数组,但以某种方式给具有更新“创建”时间戳的项目更多“权重”。随机性不一定是完美的,确切的重量对我来说并不重要。换句话说,如果有一些快速简单的技术对人类来说有点随机,但在数学上不是随机的,我可以接受。此外,如果这对于时间戳的“无限连续体”来说不容易做到,那么我可以将每条记录分配给一天或一周,并根据它们所在的日期或星期进行加权.
一种相对快速/高效的技术更可取,因为这种随机化将发生在我网站中某个页面的每个页面加载时(但如果无法有效地做到这一点,我可以定期运行它并缓存结果)。