分页范围的随机顺序

| 我正在尝试弄清楚如何创建一个范围,该范围将返回随机ActiveRecords,同时还支持will_paginate。 现在,每个页面视图都会获得完全不同的ActiveRecord随机集。因此,每个分页链接实际上只是另一组随机记录。 如何设置范围,使其成为通过分页保留的随机顺序? 我猜我需要某种基于时间的种子吗?     
已邀请:
        我猜想您在SQL中使用“ 0”来获取随机顺序。如果是这样,则可以为随机数生成器提供种子:   
RAND(), RAND(N)
     [...]如果指定了常量整数参数N,它将用作种子值,这将产生可重复的列值序列。 因此,您只需要选择一个种子(甚至可以通过在Ruby代码中使用
seed = rand(1e6)
或类似的东西)并在会话中跟踪该种子。然后,对于下一页,将种子从会话中拉出,并将其提供给MySQL的
RAND
函数。 请记住,
ORDER BY RAND()
(带或不带种子)并不是地球上最便宜的操作。如果您的可搜索表很小,则可以生成一个由一堆列组成的表,用随机数填充(可能由ѭ3generated生成),然后将该表加入其中以按顺序提供您的随机序列。通过从随机数表中选择不同的列,可以为不同的查看者提供不同的序列:对于一个用户,您可以按随机数表/矩阵的第11列进行排序,而另一位用户将使用第23列。请记住,这些表(带有主键)实际上只是有限域上的函数(反之亦然),因此您选择的通常只是实现细节。使用表实现
RAND
通常很麻烦,但我想还是要提到该选项。     

要回复问题请先登录注册