Blog on 27th Floor主页 随便 电脑 电影 社会 阅读 下载 本站 | 你可尽按自己的意志,以自己的名义, 创造自己,建设自己。 我们仅仅让你能够按照自己的自由意志成长、发展。 你也许会蜕变成无理性的畜牲; 但是如果你愿意,也可以开创神圣的生命。 Giovanni Pico della Mirandola |
让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的权重,也许可以再用点平方或开方之类的函数。
算法肯定是不精确的,要增强rand()或id的权重,也许可以再用点平方或开方之类的函数。
评论
Fwolf:
于 2005-12-22 01:02:38 发表,来自:http://www.fwolf.com/
IUSR:
让我想起来Linux的进程调度,每个进程都有各自的priority,被调度之后自己的priority就减少(减少的量貌似和什么有关,忘了),这样每个进程被调度运行的机会就大致相同了,又不会出现某个进程 过 长时间占用处理器时间。
cathayan:
也就是自己随便用用,本身Mysql里面的Rand()就不是特别乱,再×个id号已经是乱上加乱,将就用啦。。。
于 2005-12-22 10:01:32 发表,来自:http://blog.cathayan.org/member/1/catid/9
IUSR:
赫赫,讨论讨论,确实没啥实际意义![]()
Fwolf:
呵呵,瞎琢磨呗
于 2005-12-23 01:07:17 发表,来自:http://www.fwolf.com/
我来评论
为保护您的隐私,请不要在评论框里填写自己的真实E-mail地址。
广告见之即删。带有任何赢利机构链接的评论都会删除。
广告见之即删。带有任何赢利机构链接的评论都会删除。

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