« Debian新手apt-get/dpkg简明入门 | 主 页 | 为什么不能叫博客 »

让Randomquote里更多出现新条目


cathayan.org版权所有,保留一切权利。转载请保留此说明。谢绝商业转载。

本站页面右上角是个RandomQuote,是NucleusCMS的一个插件,它维护一个表,里面就是引用的这些语句,输出时就是select * from quote order by rand() limit 1 ,还是比较简单的。但我有点想让它优先显示新近加入的条目,老的东西少出来,原来想先找出最新的n条,再Random输出。但突然想到在ORDER BY上想办法也许更容易。RAND()输出是一个[0,1]的浮点数,如果要体现条目先后,再乘个item_ID就差不多了,这个ID是按先后递增的,改造为ORDER BY RAND()*id DESC,似乎就有点效果了。

算法肯定是不精确的,要增强rand()或id的权重,也许可以再用点平方或开方之类的函数。

2005-12-22 00:01:00,由cathayan发表。目录:本站  EMail This

评论

Fwolf:

可以分两步来
第一步把所有帖子按时间段划成不同权重的区域
然后随机选取从哪个区域里读
第二步如你所述,随机从已选定的区域里选篇帖子就可以了。

于 2005-12-22 01:02:38 发表,来自:http://www.fwolf.com/

IUSR:

让我想起来Linux的进程调度,每个进程都有各自的priority,被调度之后自己的priority就减少(减少的量貌似和什么有关,忘了),这样每个进程被调度运行的机会就大致相同了,又不会出现某个进程 过 长时间占用处理器时间。

于 2005-12-22 09:05:22 发表,来自:

cathayan:

也就是自己随便用用,本身Mysql里面的Rand()就不是特别乱,再×个id号已经是乱上加乱,将就用啦。。。

于 2005-12-22 10:01:32 发表,来自:http://blog.cathayan.org/member/1

IUSR:

赫赫,讨论讨论,确实没啥实际意义

于 2005-12-22 10:27:52 发表,来自:

Fwolf:

呵呵,瞎琢磨呗

于 2005-12-23 01:07:17 发表,来自:http://www.fwolf.com/

我来评论








为保护您的隐私,请不要在评论框里填写自己的真实E-mail地址。
广告见之即删。带有任何赢利机构链接的评论都会删除。